Renderizza il file HTML nella vista ASP.NET MVC?

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

  1. Crea una vista in ~ / views / cartella condivisa. dargli il nome test.cshtml
  2. Copia il contenuto di HTML in esso.
  3. Utilizzare html.partial (“test”) sulla pagina per visualizzare l’html di quella vista

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.