Slik deler Visninger mellom ASP.NET vNext MVC 6 (beta1) prosjekter?

stemmer
4

I MVC5 var det mulig å dele Visninger (Razor) mellom prosjekter ved hjelp av et verktøy som Razor Generator ( http://razorgenerator.codeplex.com ). Hvordan oppnå det samme i vNext? Mine Views føres ikke ut av boksen (prosjektet inneholder synspunkter er oppført som en avhengighet i project.json).

InvalidOperationException: The partial view '~/Views/Authentication/_LogInForm.cshtml' was not found. The following locations were searched: ~/Views/Authentication/_LogInForm.cshtml

Publisert på 07/12/2014 klokken 13:58
kilden bruker
På andre språk...                            


2 svar

stemmer
3

Vi har endelig klart å løse dette. Ikke helt lett skjønt ...

  1. Du trenger å legge ned de synspunkter som ressurser i prosjektet du stole på. For å gjøre dette, legg "resources": [ "**/*.cshtml" ]til sin project.json.

  2. Du må opprette en IFileSystem som ser inn disse ressursene i stedet for å se på disken. Dette er den vanskelige delen. Jeg setter dette på pastbin for lisibility: http://pastebin.com/aNfq5hNi

  3. Du må registrere dette IFileSystem i dine Startup.cs:

//... public void Configure(IApplicationBuilder app,IHostingEnvironment env,ILoggerFactory loggerfactory) { //Enable use of views in other assemblies IOptions<RazorViewEngineOptions> razorViewEngineOptions=app.ApplicationServices.GetService<IOptions<RazorViewEngineOptions>>(); razorViewEngineOptions.Options.FileSystem=new MVCAsset.EmbeddedExpiringFileInfoCache( razorViewEngineOptions, app.ApplicationServices.GetService<ILibraryManager>() ); //... } //...

NB: Dette er faktisk testet og fungerer for MVC6 RC1, det gjorde jeg ikke teste for beta1.

Svarte 05/01/2015 kl. 16:14
kilden bruker

stemmer
2

Jeg er ikke sikker på om dette hjelper med å få tilgang visninger i eksterne forsamlinger, men å legge til steder hvor utsikten kan bli oppdaget du kan implementere IViewLocationExpander som dette:

public class ViewLocationExpander : IViewLocationExpander
{
    public IEnumerable<string> ExpandViewLocations(ViewLocationExpanderContext context, IEnumerable<string> viewLocations)
    {
        var locations = new List<string>(viewLocations);

        locations.Add("Views/MyOtherViewLocation/{0}.cshtml");

        return locations;
    }

    public void PopulateValues(ViewLocationExpanderContext context)
    {

    }
}

I Startup.cs ConfigureServices metoden, legge til:

        services.Configure<RazorViewEngineOptions>(options =>
        {
            var expander = new ViewLocationExpander();
            options.ViewLocationExpanders.Add(expander);
        });
Svarte 19/12/2014 kl. 03:50
kilden bruker

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