2013-07-18 28 views
7

Tôi nghĩ rằng một số hiểu biết của tôi về MVC là thiếu sót nghiêm trọng. Tôi đã luôn luôn giả định rằng các phương thức hành động trong một bộ điều khiển là không trạng thái và chính bộ điều khiển là không trạng thái.Hành động là phi trạng thái nhưng là bộ điều khiển không quốc tịch?

Vì vậy, là một phiên bản mới của bộ điều khiển được tạo ra mỗi khi có bất kỳ hành động nào được gọi?

+2

Có, bộ điều khiển là một đối tượng ... IIS là một máy chủ theo yêu cầu. Sau khi đối tượng điều khiển thực thi hành động sẽ được xử lý. – YD1m

Trả lời

4

Một ví dụ mới của bộ điều khiển được tạo ra cho mỗi yêu cầu sắp tới trong Xem xét việc này:.

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return MoreIndex(); 
    } 

    public ActionResult MoreIndex() 
    { 
     return View(); 
    } 
} 

Một yêu cầu sắp tới trong /Home/Index sẽ nhập hai hành động, nhưng chỉ có một điều khiển được tạo ra. Yêu cầu đến cho /Home/MoreIndex sẽ nhập một hành động và một bộ điều khiển được tạo. Bây giờ không có gì ngăn cản bạn tạo thủ công một bộ điều khiển và giữ nó sống động và tái sử dụng nó. Nhưng nó sẽ không bao giờ nằm ​​trong bối cảnh của một yêu cầu thực sự đến từ HTTP.

+1

Trang này chứa thông tin bổ sung mà bạn có thể thấy hữu ích: http://blog.christopheargento.net/2012/06/11/detailed-life-cycle-of-an-asp-net-mvc-request/ –

1

Hoàn toàn hợp lý khi có trạng thái trong bộ điều khiển. Tôi thường tham khảo kết nối cơ sở dữ liệu của tôi từ một lớp cơ sở điều khiển chung. Vì lý do đó MVC tạo ra một bộ điều khiển mới cho mỗi yêu cầu và xử lý đúng cách nó ở cuối.

Các vấn đề liên quan