Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 ASP.NETMVC如何从控制器确定要使用的视图?_Asp.net Mvc 3_Actionresult - Fatal编程技术网

Asp.net mvc 3 ASP.NETMVC如何从控制器确定要使用的视图?

Asp.net mvc 3 ASP.NETMVC如何从控制器确定要使用的视图?,asp.net-mvc-3,actionresult,Asp.net Mvc 3,Actionresult,我有一个返回ActionResult的控制器。具体来说,它在方法末尾调用returnviewsomeviewmodel。以下是方法签名: protected ActionResult SomeControllerMethod(AViewModel someViewModel) 我随后从AViewModel继承了一个heritedviewmodel,向该类添加了一些新属性,现在将其传递给一些controllermethod 现在,在这个方法末尾的return语句中,我得到了一个关于如何找不到视图

我有一个返回ActionResult的控制器。具体来说,它在方法末尾调用returnviewsomeviewmodel。以下是方法签名:

protected ActionResult SomeControllerMethod(AViewModel someViewModel)
我随后从AViewModel继承了一个heritedviewmodel,向该类添加了一些新属性,现在将其传递给一些controllermethod

现在,在这个方法末尾的return语句中,我得到了一个关于如何找不到视图的错误。这很公平,但我不确定默认情况下这一切是如何运作的

视图名MVC告诉我它正在寻找的对象与控制器方法或模型类型的名称不一致。按照相同的模式,也没有与原始模型名称对应的视图。所以我不确定MVC如何决定使用哪个视图

当你

public ActionResult SomeControllerMethod()
{
    return View();
}
MVC尝试查找名为SomeControllerMethod.cshtml的视图。它使用方法的名称作为查找视图文件的指南

您可以通过以下方式覆盖此选项:

public ActionResult SomeControllerMethod()
{
    return View("MyView");
}
因此,MVC将尝试查找MyView.cshtml。

当您

public ActionResult SomeControllerMethod()
{
    return View();
}
MVC尝试查找名为SomeControllerMethod.cshtml的视图。它使用方法的名称作为查找视图文件的指南

您可以通过以下方式覆盖此选项:

public ActionResult SomeControllerMethod()
{
    return View("MyView");
}

MVC将因此尝试查找MyView.cshtml。

另外,请务必注意存在于/views/Shared中的视图。默认情况下,MVC也将搜索此文件夹。但最令人烦恼的是,当action方法使用ActionNameAttribute重命名时,例如:


在这种情况下,MVC将查找一个名为Bob的视图。

另外,请务必注意位于/views/Shared中的视图。默认情况下,MVC也将搜索此文件夹。但最令人烦恼的是,当action方法使用ActionNameAttribute重命名时,例如:

在这种情况下,MVC将寻找一个名为Bob的视图

当用户在浏览器中输入URL时,MVC应用程序使用 在Global.asax文件中定义的路由规则,用于分析 URL和以确定控制器的路径。那么控制器呢 确定处理请求的适当操作方法。通过 默认情况下,请求的URL被视为包含 控制器名称后跟操作名称。例如,如果 用户输入URL, 子路径为/产品/类别。默认路由规则处理 Products作为控制器的前缀名称,必须以结尾 控制器,如ProductsController。它将类别视为 操作的名称。因此,路由规则调用 产品控制器的分类方法,以便处理 要求如果URL以/Products/Detail/5结尾,则默认路由为 规则将Detail视为操作的名称和Detail方法 调用Products控制器的一部分来处理请求。通过 默认情况下,URL中的值5将传递给Detail方法 作为一个参数。下面的示例显示了一个控制器类 具有HelloWorld操作方法

参考:

当用户在浏览器中输入URL时,MVC应用程序使用 在Global.asax文件中定义的路由规则,用于分析 URL和以确定控制器的路径。那么控制器呢 确定处理请求的适当操作方法。通过 默认情况下,请求的URL被视为包含 控制器名称后跟操作名称。例如,如果 用户输入URL, 子路径为/产品/类别。默认路由规则处理 Products作为控制器的前缀名称,必须以结尾 控制器,如ProductsController。它将类别视为 操作的名称。因此,路由规则调用 产品控制器的分类方法,以便处理 要求如果URL以/Products/Detail/5结尾,则默认路由为 规则将Detail视为操作的名称和Detail方法 调用Products控制器的一部分来处理请求。通过 默认情况下,URL中的值5将传递给Detail方法 作为一个参数。下面的示例显示了一个控制器类 具有HelloWorld操作方法


参考:

这不就是将字符串“MyView”作为模型发送到SomeControllerMethod.cshtml吗?要发送模型,您可以使用:return ViewMyView,myModelClass;谢谢你,杰森和其他人。在我的例子中,如果调用的是Viewmodel,MVC是否使用模型的类类型来确定要查找的视图?如果操作方法调用Index,而您调用return Viewmodel,然后MVC将查找名为Index.cshtml的视图,并将模型传递给它。这不就是将字符串“MyView”作为模型发送给SomeControllerMethod.cshtml吗?要发送模型,您将使用:return ViewMyView,myModelClass;谢谢你,杰森和其他人。如果在我的例子中调用的是Viewmodel-does呢
MVC使用模型的类类型来确定要查找的视图?如果操作方法被称为Index,而您调用return Viewmodel,那么MVC将查找名为Index.cshtml的视图并将模型传递给它。