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

asp.net-core – 如何为所有视图设置布局,基类和使用?

发布时间:2020-12-16 03:29:38 所属栏目:asp.Net 来源:网络整理
导读:在MVC 5中,我可以为“Views / Web.Config”中的所有视图设置默认基类和使用: system.web.webPages.razor pages pageBaseType="SomeCustomPageClass" namespaces add namespace="SomeNamespace" / 我还可以在“_ViewStart.cshtml”中为所有视图设置默认布局
在MVC 5中,我可以为“Views / Web.Config”中的所有视图设置默认基类和使用:

<system.web.webPages.razor>
  <pages pageBaseType="SomeCustomPageClass">
    <namespaces>
      <add namespace="SomeNamespace" />

我还可以在“_ViewStart.cshtml”中为所有视图设置默认布局:

@{ Layout = "~/Views/Shared/SomeCustomLayout.cshtml"; }

我怎样才能在MVC 6中做到这些?

解决方法

正如在CTP3中报告的 in this github issue,无法通过配置执行此操作.但是,您可以使用自定义MvcRazorHost替换默认的MvcRazorHost:

public abstract class MyPage<T> : RazorPage<T>
{/*...*/}

public abstract class MyPage : RazorPage
{/*...*/}

public class MvcMyHost : MvcRazorHost
{
    public MvcMyHost() : base(typeof(MyPage).FullName) { }
}

public class Startup
{
    public void Configure(IBuilder app)
    {
        var configuration = new Configuration();
        configuration.AddJsonFile("config.json");
        configuration.AddEnvironmentVariables();

        app.UseServices(services =>
        {
            services.AddMvc(configuration);
            services.AddTransient<IMvcRazorHost,MvcMyHost>();
        });
        // etc...
    }
}

不幸的是,你没有使用这种方法进行智能感知,因为编辑器总是使用原始的MvcRazorHost类.

在vNext的alpha4中,你所要求的一切(页面基类型通过 – @inherits指令,使用,布局)将通过_ViewStart.cshtml支持,如here所述.

(编辑:李大同)

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

    推荐文章
      热点阅读