加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-4 – PartialView()不返回带下划线的View

发布时间:2020-12-16 07:16:39 所属栏目:asp.Net 来源:网络整理
导读:TemplateController: 这工作: return PartialView("_Create"); 但这不起作用: return PartialView(); asp.net mvc约定实际应该检查一个View文件夹,其名称为controller = “模板”并检查查看与action =相同的名称“创建”. 这对返回View()有效.为什么返回P
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用于其他版本.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读