Lassen Sie uns sagen, dass ich einen Controller haben, der Attribut-based Routing verwendet, wie so eine angeforderte URL/admin/Produkt zu handhaben:Wie Sie den Speicherort der Ansicht in asp.net Core Mvc angeben, wenn Sie benutzerdefinierte Speicherorte verwenden?
[Route("admin/[controller]")]
public class ProductController: Controller {
// GET: /admin/product
[Route("")]
public IActionResult Index() {
return View();
}
}
die wir nun sagen, dass ich meine Ansichten in einer Ordnerstruktur organisiert halten möchten, das entspricht ungefähr den URL-Pfaden, auf die sie sich beziehen. Also würde ich die Ansicht mag für diesen Controller hier lokalisiert werden:
/Views/Admin/Product.cshtml
weiter zu gehen, wenn ich einen Controller wie folgt habe:
[Route("admin/marketing/[controller]")]
public class PromoCodeListController: Controller {
// GET: /admin/marketing/promocodelist
[Route("")]
public IActionResult Index() {
return View();
}
}
ich den Rahmen möchte automatisch suchen es ist Blick hier:
Views/Admin/Marketing/PromoCodeList.cshtml
Ideal des Ansatz für den Rahmen der Aussichtslage zu informieren würde auf der Grundlage des Informationsattribut basierend Route in allgemeiner Art und Weise arbeitet, unabhängig davon, wie viele url seg sind involviert (d. h. wie tief es verschachtelt ist).
Wie kann ich das Core MVC-Framework (ich verwende derzeit RC1) anweisen, an einem solchen Ort nach der Ansicht des Controllers zu suchen?
Dies ist eine gute Lösung, dies löst jedoch nicht das Problem, eine Ansicht mit einem Routenattribut für die Aktion oder den Controller zu finden. Die View-Methode scheint weiterhin den Namen des Controllers und nicht den Routennamen zu verwenden, um die Ansicht zu finden. – Xipooo
@ Xipooo, guter Punkt. Das von mir bereitgestellte Beispiel ist ein guter Anfang, aber um die Route zu verwenden, können Sie 'locations' Array so einstellen, dass'/Views' + 'context.ActionContext.HttpContext.Request.Path' + entweder' index.cshtml' oder '.cshtml' enthalten . –
Dadurch konnte ich eine Ansicht verwenden, die über einen .net-Standard 1.6 zum Ordner bin hinzugefügt wurde. Danke großartige Lösung. – DeadlyChambers