2012-02-01 40 views
10

Tôi vừa mới bắt đầu sử dụng MVC4 và phương pháp hành động đầu tiên mà tôi xem xét có điều gì đó mới mẻ. Tôi đã kiểm tra trên internet và không thể tìm thấy bất kỳ điều gì về điều này:MVC4 - ContextDependentView - Điều đó có nghĩa là gì?

public ActionResult LogOn() 
     { 
      return ContextDependentView(); 
     } 

Có ai biết ContextDependentView là gì không?

Điều gì đó mới mẻ đối với tôi.

Trả lời

11

Mục đích là để tạo điều kiện cho các kết quả hành động Xem hoặc một phần Xem hành động cho các hành động Đăng nhập và Đăng ký.

private ActionResult ContextDependentView() 
    { 
     string actionName = ControllerContext.RouteData.GetRequiredString("action"); 
     if (Request.QueryString["content"] != null) 
     { 
      ViewBag.FormAction = "Json" + actionName; 
      return PartialView(); 
     } 
     else 
     { 
      ViewBag.FormAction = actionName; 
      return View(); 
     } 
    } 

Giống như những thứ khác trong MVC nó được thực hiện theo quy ước ... ước đây là khi Request.QueryString chứa một ?content=xxxx, nó prepends "Json" để tên hành động, nhét nó thuộc tính ViewBag và trả về một phần phiên bản của Chế độ xem. Ví dụ:

Yêu cầu cho /Account/Login?content=test sẽ được giải quyết thành ViewBag.FormAction = "JsonLogin"; và sau đó trả lại một phần.

Một yêu cầu /Account/Login không có chuỗi truy vấn nội dung để hình thức hành động của nó vẫn còn ViewBag.FormAction = "Login";

+0

Cảm ơn rất nhiều cho lời giải thích. –

+1

Bạn có nghĩ đây thực sự là phương pháp riêng trong bộ điều khiển này không? Dường như với tôi như nó là cái gì đó có thể được sử dụng cho bất kỳ bộ điều khiển nào. Bạn đã sử dụng phương pháp này cho mình và bạn đã để nó là riêng tư chưa? –

+0

Thành thật mà nói, tôi chỉ mới bắt đầu chơi với MVC4. Tôi đặt cược phương pháp này sẽ thay đổi trước khi nó đi vào sản xuất. Bạn cũng có thể di chuyển nó vào lớp 'BaseController: Controller' của riêng bạn nếu bạn thích hoặc tìm cách sử dụng nó. Bí quyết trong việc đặt nó trong một bộ điều khiển cơ sở riêng hoặc tĩnh, có vẻ là nó bắt buộc bạn tạo ra các khung nhìn cho cả hai kịch bản một phần và toàn bộ. Tôi sẽ rời khỏi nó như nó là và thử nghiệm với chức năng của nó và xem nó ở đâu trong Release Candidate (RC). –

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