A mio avviso, vorrei rendere il contenuto di un file HTML come una vista parziale. Mi sta dando questo errore però quando aggiungo questo alla vista .cshtml:
@Html.Partial(Url.Content("~/Test/main.html"))
Errori:
Exception Details: System.InvalidOperationException: The partial view '/Scripts/main.html' was not found or no view engine supports the searched locations. The following locations were searched: /Scripts/main.html
Il file è fisicamente lì però. C’è un modo diverso in cui dovrei fare questo?
Non è ansible utilizzare Html.Partial
per questo.È un metodo di supporto speciale per il rendering di viste parziali. Invece puoi aggiungere Action
come questa:
[ChildActionOnly] public ActionResult GetHtmlPage(string path) { return new FilePathResult(path, "text/html"); }
E puoi chiamarlo dal tuo View
usando Html.Action
metodo di aiuto:
@Html.Action("GetHtmlPage","controllername", new { path = "~/Test/main.html" })
La semplice risposta è rinominare il file main.html in main.cshtml che verrà riconosciuto dal motore di visualizzazione Razor per il rendering.
Segui questi passi
Penso che sia una soluzione migliore: usa WriteFile
dall’object Response
@Response.WriteFile(pathToMyHtmlFile)
preso da qui
Puoi usare questo nella tua vista cshtml:
@{this.GetOutputWriter().Write(File.ReadAllText(Server.MapPath("/your/static/file.html")));}
Basta usare una richiesta Ajax per recuperare il file html in uscita il contenuto nel tuo html principale. Poiché si tratta di un file html, verrà memorizzato nella cache nelle chiamate successive e non ci sarà alcun impatto sulle prestazioni.