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
实现,那么这应该是可行的。