Ho un metodo di estensione html per recuperare l'URL per un file che si trova nella stessa cartella della vista.MVC3: Qual è il modo migliore per ottenere il percorso di visualizzazione da un oggetto HtmlHelper?
Esempio
/Views/Home/Index.cshtml
/Views/Home/Index.js
/Views/Home/Index.css
È questo il modo migliore per farlo? Non mi piace perché devo fare il seguente cast. Sono sicuro che RazorView non funzionerà se si utilizza un motore di visualizzazione diverso, ma su di esso IView ha solo un metodo Render.
((RazorView)helper.ViewContext.View).ViewPath
Ecco il metodo integrale
public static string GetUrl(this System.Web.Mvc.HtmlHelper helper, string fileName) {
string virtualPath = ((RazorView) helper.ViewContext.View).ViewPath;
virtualPath = virtualPath.Substring(0, virtualPath.LastIndexOf("/") + 1);
return virtualPath + fileName;
}
Cosa stai finalmente intenzione di fare con l'URL? Inseriscilo in un codice HTML e invialo al browser? Se sì, è improbabile che funzioni poiché la sottodirectory Views è protetta e non accessibile tramite un URL. – Codo
Ho già reso accessibili questi file tramite web.config rimuovendo BlockViewHandler dall'elenco dei gestori. –
Sei sicuro che sia una buona cosa da fare? Non ti dispiace se le persone scaricano i tuoi file .cshtml per controllarli per i bug di sicurezza? – Codo