MVC4 - ContextDependentView - 它是什么意思?

时间:2012-02-01 13:42:04

标签: asp.net asp.net-mvc asp.net-mvc-4

我刚刚开始使用MVC4,我看到的第一个动作方法有新的东西。我检查了互联网,但无法找到任何相关信息:

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

有谁知道ContextDependentView是什么?

对我来说很新鲜。

1 个答案:

答案 0 :(得分:11)

其目的是为登录和注册操作提供View或PartialView操作结果。

    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();
        }
    }

与MVC中的其他内容一样,它是按惯例完成的......这里的约定是Request.QueryString包含?content=xxxx时,它将“Json”添加到操作名称,将其填充为ViewBag属性并返回View的部分版本。例如:

/Account/Login?content=test的请求将被解析为ViewBag.FormAction = "JsonLogin";,然后返回部分。

/Account/Login的请求没有内容查询字符串,因此其表单操作仍为ViewBag.FormAction = "Login";