Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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 如何为Razor模板指定特定路径?_Asp.net Mvc_Razor_Template Engine - Fatal编程技术网

Asp.net mvc 如何为Razor模板指定特定路径?

Asp.net mvc 如何为Razor模板指定特定路径?,asp.net-mvc,razor,template-engine,Asp.net Mvc,Razor,Template Engine,如果我有控制器HomeController和操作Index(),但是我的模板在Views/Index.cshtml中,而不是Views\Home\Index.cshtml-有没有办法绕过传统的加载机制来呈现前者,您可以在视图方法中明确指出从何处加载视图。您只需使用~/Views启动viewName参数,并且还必须写出.cshtml扩展名: 公共类HomeController:控制器 { 公共行动结果索引() { 返回视图(“~/Views/Index.cshtml”); } } 然而,MVC惯

如果我有控制器
HomeController
和操作
Index()
,但是我的模板在
Views/Index.cshtml
中,而不是
Views\Home\Index.cshtml
-有没有办法绕过传统的加载机制来呈现前者,您可以在
视图
方法中明确指出从何处加载视图。您只需使用
~/Views
启动
viewName
参数,并且还必须写出
.cshtml
扩展名:

公共类HomeController:控制器
{
公共行动结果索引()
{
返回视图(“~/Views/Index.cshtml”);
}
}

然而,MVC惯例是,如果您有不属于某个特定控制器的视图,那么这些视图应该转到views\Shared文件夹,并从那里进行查找。

在没有“.cshtml”的情况下进行了尝试,我得到了:未找到视图“~/views/Index”或其主视图,或者没有视图引擎支持搜索的位置。搜索了以下位置:~/Views/IndexIt在没有“.cshtml”扩展名的情况下无法工作。您必须使用
返回视图(“~/Views/Index.cshtml”)正如我在回答中写的。明白了!我想这限制了我使用剃须刀吧?是否有任何方法可以这样做,以便模板解析器仍然可以选择引擎?重要的不是
.cshtml
。但是你需要把扩展本身放进去。因此,如果要使用aspx引擎,则需要编写
返回视图(“~/Views/Index.aspx”)。如果您的模板带有适当的
ViewEngine
实现,那么这应该是可行的。