Jego celem jest ułatwienie działania wyniku View lub PartialView dla działań Login i Register.
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();
}
}
Podobnie jak inne rzeczy w MVC jest dokonywane przez Konwencję ... Konwencja o to, kiedy Request.QueryString
zawiera ?content=xxxx
, to poprzedza „json” do nazwy działania, szczeliwo to właściwość ViewBag i zwraca częściowego wersja widoku. Na przykład:
Wniosek o /Account/Login?content=test
zostanie rozpatrzony pod numerem ViewBag.FormAction = "JsonLogin";
, a następnie zwróci część.
Żądanie /Account/Login
ma zawartość ciąg kwerendy więc jego działanie forma pozostaje ViewBag.FormAction = "Login";
Dziękuję bardzo za wyjaśnienie. –
Czy uważasz, że to naprawdę powinna być prywatna metoda w tym kontrolerze? Wydaje mi się, że jest to coś, co można wykorzystać do każdego kontrolera. Czy sam użyłeś tej metody i pozostawiłeś ją jako prywatną? –
Szczerze mówiąc, zacząłem grać tylko z MVC4. Założę się, że ta metoda zmieni się, zanim przejdzie do produkcji. Możesz też przenieść to do swojej własnej klasy "BaseController: Controller", jeśli chcesz lub możesz jej użyć. Sztuczka polegająca na umieszczeniu go w prywatnym lub statycznym kontrolerze bazowym wydaje się, że zobowiązuje Cię do tworzenia widoków zarówno dla częściowych, jak i kompletnych scenariuszy. Pozostawiłbym go takim, jaki jest, i eksperymentuję z jego funkcją i sprawdzam, gdzie się znajduje w Release Candidate (RC). –