Pas*_*cal 5 asp.net-mvc-partialview asp.net-mvc-4
TemplateController:
这工作:
return PartialView("_Create");
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
return PartialView();
Run Code Online (Sandbox Code Playgroud)
asp.net mvc约定实际上应检查具有控制器名称=>"模板"的View文件夹,并检查View与action =>"Create"的名称相同.
这对返回View()有效.为什么返回PartialView()不仅仅考虑下划线?
这个答案专门针对ASP.NET MVC5.可能需要稍微修改才能与其他版本的MVC一起使用,但通常应该适用.
要return Partial(model)在部分名称上加上下划线,您需要一个自定义视图引擎.幸运的是,这是一个非常简单的自定义视图引擎.
public class CustomRazorViewEngine : RazorViewEngine
{
public CustomRazorViewEngine()
{
var underScored = new[] { "~/Views/{1}/_{0}.cshtml", "~/Views/{1}/_{0}.vbhtml" }
PartialViewLocationFormats = underScored.Union(PartialViewLocationFormats).ToArray();
}
}
Run Code Online (Sandbox Code Playgroud)
以下格式是共享视图的默认模式:
~/Views/Shared/{0}.cshtml
~/Views/Shared/{0}.vbhtml
Run Code Online (Sandbox Code Playgroud)
如果您愿意,也可以包含替代品.如果您特别想要仅使用下划线提供文件,请删除联合并仅使用:PartialViewLocationFormats = underScored;
这是剃刀视图引擎,我认为它可以与webforms视图引擎相媲美,如果这是您的首选引擎.
最后,您需要将此注册为视图引擎:
public class Startup
{
public void Configuration(IAppBuilder app)
{
//View Engines
ViewEngines.Engines.Remove(ViewEngines.Engines.Single(x => x is RazorViewEngine));
ViewEngines.Engines.Add(new CustomRazorViewEngine());
Run Code Online (Sandbox Code Playgroud)
该Startup班是专门针对MVC5,这将版本稍有不同.您可以将App_Start文件与webactivator一起使用,也可以将global.asax用于其他版本.
| 归档时间: |
|
| 查看次数: |
1702 次 |
| 最近记录: |