Su objetivo es facilitar los resultados de acción Vista o Vista parcial para las acciones Iniciar sesión y Registrar.
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();
}
}
Al igual que otras cosas en MVC Se realiza mediante la convención de la convención ... aquí es cuando el Request.QueryString
contiene una ?content=xxxx
, se antepone "JSON" al nombre de la acción, lo mete una propiedad ViewBag y devuelve el parcial versión de la Vista. Por ejemplo:
Una solicitud para /Account/Login?content=test
se resolvería en ViewBag.FormAction = "JsonLogin";
y luego devolvería un parcial.
La solicitud de /Account/Login
tiene ninguna cadena de consulta de contenido por lo que su forma de acción sigue siendo ViewBag.FormAction = "Login";
Muchas gracias por la explicación. –
¿Crees que esto debería ser realmente un método privado en este controlador? Me parece que es algo que podría usarse para cualquier controlador. ¿Has usado este método tú mismo y lo dejaste como privado? –
Para ser honesto, solo he comenzado a jugar con MVC4. Apuesto a que este método cambiará antes de que llegue a producción. También puede mover esto a su propia clase 'BaseController: Controller' si lo desea o puede usarlo. El truco de ponerlo en un controlador base privado o estático parece ser que lo obliga a realizar vistas para escenarios parciales y completos. Lo dejo tal como está y experimento con su función y veo a dónde va en Release Candidate (RC). –