Asp.net MVC4-ContextDependentView-它是什么意思?

Asp.net MVC4-ContextDependentView-它是什么意思?,asp.net,asp.net-mvc,asp.net-mvc-4,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我刚刚开始使用MVC4,我看到的第一个动作方法有一些新的东西。我查看了互联网,但找不到关于此的任何信息: public ActionResult LogOn() { return ContextDependentView(); } 有人知道什么是ContextDependentView吗 对我来说是新鲜事 其目的是方便查看或部分查看登录和注册操作的操作结果 private ActionResult ContextDependent

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

public ActionResult LogOn()
        {
            return ContextDependentView();
        }
有人知道什么是ContextDependentView吗


对我来说是新鲜事

其目的是方便查看或部分查看登录和注册操作的操作结果

    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中的其他东西一样,它是按惯例完成的。。。这里的约定是,当
请求.QueryString
包含
?content=xxxx
时,它会在动作名称前加上“Json”,将其填充为ViewBag属性并返回视图的部分版本。例如:

/Account/Login?content=test
的请求将被解析为
ViewBag.FormAction=“JsonLogin”然后返回一个部分


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

非常感谢您的解释。您认为这真的应该是此控制器中的私有方法吗?在我看来,它可以用于任何控制器。你自己用过这个方法吗?你是不是把它当作私人的?老实说,我才刚开始玩MVC4。我敢打赌,在投入生产之前,这种方法一定会改变。如果您喜欢或发现它的用途,您也可以将其移动到自己的
BaseController:Controller
类中。把它放在基础控制器私有或静态中的诀窍似乎是,它使您有义务为部分和完整场景创建视图。我会让它保持原样,试验它的功能,看看它在ReleaseCandidate(RC)中的位置。