Hvordan sette layout, base klasse og usings for alle synspunkter?

stemmer
4

I MVC 5, kan jeg sette en standard base klasse og usings for alle visninger i Views / web.config:

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

Jeg kan også sette standardoppsett for alle visninger i _ViewStart.cshtml:

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

Hvordan kan jeg gjøre noen av disse i MVC 6?

Publisert på 09/09/2014 klokken 11:21
kilden bruker
På andre språk...                            


2 svar

stemmer
4

Som rapportert i denne github problemet i CTP3 er det ingen måte å gjøre dette via konfigurasjon. Du kan imidlertid erstatte standard MvcRazorHost med en tilpasset en:

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...
    }
}

Dessverre du ikke får IntelliSense med denne tilnærmingen, siden redaktøren bruker alltid den opprinnelige MvcRazorHost klassen.

I alpha4over vNext alt du har bedt om (side basen type via - @inherits direktivet usings, layout) vil bli støttet via _ViewStart.cshtmlsom omtalt her .

Svarte 09/09/2014 kl. 11:39
kilden bruker

stemmer
0

som av 2017-1-14, dokumentasjonen på Razor direktiver sier dette er støttet:

Den @inheritsDirektivet gir deg full kontroll over klassen din Razor siden arver

@inherits TypeNameOfClassToInheritFrom

For eksempel, la oss si at vi hadde følgende tilpassede Razor sidetype:

using Microsoft.AspNetCore.Mvc.Razor;

public abstract class CustomRazorPage<TModel> : RazorPage<TModel>
{
    public string CustomText { get; } = "Hello World.";
}

Følgende Razor ville generere <div>Custom text: Hello World</div>.

@inherits CustomRazorPage<TModel>

<div>Custom text: @CustomText</div>
Svarte 13/07/2017 kl. 18:56
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more