Con Asp .Net 5 beta 6
gli helper dei tag non vengono risolti quando la vista si trova all'esterno della cartella Views
. La struttura delle cartelle che vorrei è basata sulla funzione piuttosto che sui tipi di file. Il controller, visualizza modelli e viste per una particolare funzione Vorrei raggrupparli in una cartella che rifletta il nome del controller. Ecco un esempio della struttura delle cartelle che vorrei nel progetto:Gli helper dei tag non vengono risolti quando la vista è all'esterno della cartella Views
UI
- Account
- AccountController.cs
- AccountViewModels.cs
- Login.cshtml
- Register.cshtml
- Students
- StudentsController.cs
- StudentsViewModels.cs
- CaptureStudent.cshtml
per raggiungere questo ho creato un motore di visualizzazione personalizzata:
public class CustomUIViewEngine : RazorViewEngine
{
public CustomUIViewEngine(IRazorPageFactory pageFactory,
IRazorViewFactory viewFactory,
IOptions<RazorViewEngineOptions> optionsAccessor,
IViewLocationCache viewLocationCache) :
base(pageFactory, viewFactory, optionsAccessor, viewLocationCache)
{
}
public override IEnumerable<string> ViewLocationFormats
{
get
{
var viewLocationFormats = base.ViewLocationFormats
.Union(new string[] { "~/UI/{1}/{0}.cshtml" });
return viewLocationFormats;
}
}
}
Che mi iscrivo in startup.cs
come segue:
services.AddMvc().ConfigureMvcViews(options =>
{
options.ViewEngines.Clear();
options.ViewEngines.Add(typeof(CustomUIViewEngine));
});
Questa usanza funziona e lo sguardo si trova e resa, con l'unico problema è che la tag helpers
non sono rendere correttamente d, così invece di vedere questo:
<form method="post" class="form-horizontal" role="form" action="/Account/Login">
sto vedendo questo nella fonte reso:
<form asp-controller="Account" asp-action="Login" method="post" class="form-horizontal" role="form">
Qualcuno sa il motivo per cui il tag helpers
non sono il rendering correttamente quando la vista si trova al di fuori della cartella Visualizzazioni e se c'è un modo per correggere questo in un'applicazione web Asp.Net 5
?
Grazie per l'aiuto RickAnd. :) Sì, l'aggiunta della direttiva @addTagHelper alla vista risolveva il problema, così come lo spostava la cartella _ViewImports dalla sua posizione predefinita alla radice della mia cartella UI. Problema risolto. Grazie! – BruceHill
@BruceHill fantastico. Ti dispiacerebbe contrassegnare questo come la domanda risposta? – RickAndMSFT
Sarebbe utile se i documenti potessero includere ulteriori informazioni riguardo alle posizioni dei file possibili di "_ViewImports" se non si utilizza la struttura di progetto predefinita (ad esempio, cosa succede se tutte le viste non si trovano in una cartella 'Viste' comune?). Sembra che se si posiziona '_ViewImports' nella radice del progetto, esso si applicherà a tutte le viste in tutte le cartelle, quindi questo lo gestisce, ma al momento i documenti non sembrano coprirlo. – cbranch