Diciamo che ho un controller che utilizza il routing basato attributo per gestire un URL richiesto di/admin/prodotto in questo modo:Come specificare la posizione della vista in asp.net core mvc quando si utilizzano posizioni personalizzate?
[Route("admin/[controller]")]
public class ProductController: Controller {
// GET: /admin/product
[Route("")]
public IActionResult Index() {
return View();
}
}
Ora diciamo che mi piacerebbe mantenere le mie opinioni organizzati in una struttura di cartelle che riflette approssimativamente i percorsi di URL a cui sono collegati. Così mi piacerebbe la vista per questo controller per essere collocata qui:
/Views/Admin/Product.cshtml
Per andare oltre, se avessi un controller come questo:
[Route("admin/marketing/[controller]")]
public class PromoCodeListController: Controller {
// GET: /admin/marketing/promocodelist
[Route("")]
public IActionResult Index() {
return View();
}
}
Vorrei che il quadro di cercare automaticamente è vista qui:
Views/Admin/Marketing/PromoCodeList.cshtml
Idealmente l'approccio per informare il quadro della posizione vista avrebbe funzionato in modo generale sulla base delle informazioni percorso attributi base indipendentemente dal numero di url seg sono coinvolti (es. quanto profondamente annidato è).
Come posso istruire il framework MVC di base (attualmente sto utilizzando RC1) per cercare la vista del controller in tale posizione?
Questa è una buona soluzione, tuttavia, questo non risolve il problema di trovare una vista che ha un attributo route sull'azione o sul controller. Il metodo di visualizzazione sembra ancora utilizzare il nome del controller e non il nome della rotta per individuare la vista. – Xipooo
@Xipooo, buon punto. L'esempio che ho fornito è un buon inizio, ma per utilizzare il percorso è possibile impostare l'array 'locations' per includere '/ Views' +' context.ActionContext.HttpContext.Request.Path' + 'index.cshtml' o '.cshtml' . –
Questo mi ha permesso di usare una vista che è stata aggiunta alla cartella bin tramite uno standard .net 1.6. Grazie ottima soluzione. – DeadlyChambers