TemplateController:
这工作:
return PartialView("_Create");
但这不起作用:
return PartialView();
asp.net mvc约定实际应该检查一个View文件夹,其名称为controller => “模板”并检查查看与action =>相同的名称“创建”.
这对返回View()有效.为什么返回PartialView()不仅仅考虑下划线?
解决方法
这个答案专门针对ASP.NET MVC5.可能需要稍微修改才能与其他版本的MVC一起使用,但通常应该适用.
要让返回部分(模型)尊重部分名称的下划线,您需要一个自定义视图引擎.幸运的是,这是一个非常简单的自定义视图引擎.
public class CustomrazorViewEngine : RazorViewEngine { public CustomrazorViewEngine() { var underscored = new[] { "~/Views/{1}/_{0}.cshtml","~/Views/{1}/_{0}.vbhtml" } PartialViewLocationFormats = underscored.Union(PartialViewLocationFormats).ToArray(); } }
以下格式是共享视图的默认模式:
~/Views/Shared/{0}.cshtml ~/Views/Shared/{0}.vbhtml
如果您愿意,也可以包含替代品.如果您特别想要仅使用下划线提供文件,请删除联合并仅使用: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());
Startup类特定于MVC5,这在版本之间会略有不同.您可以将App_Start文件与webactivator一起使用,也可以将global.asax用于其他版本.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。