Читайте на html-странице в asp.net mvc - PullRequest
3 голосов
/ 19 июля 2009

я портирую через сайт из asp.

У меня есть одна страница, которую я не могу понять, как ее перенести.

Страница является динамической в ​​том смысле, что она читает другие html-страницы и вставляет содержимое в главную «контейнерную» страницу. В середине страницы asp есть разделы, как показано ниже

<%
Dim fso1, f11, ts1, s1  
Const ForReading1 = 1  
Set fso1 = CreateObject("Scripting.FileSystemObject")   
Set ts1 = fso1.OpenTextFile("" & Server.MapPath("newsletters/welcome.html") & "",     ForReading)  
s1 = ts1.ReadAll  
Response.Write s1  
ts1.Close  
set fso1 = nothing  
set f11 = nothing  
set ts1 = nothing  
set s1 = nothing  
%>  

Любые предложения в ASP.net MVC о том, как лучше читать другие html-страницы и вставлять их в просмотр страниц.

Ответы [ 3 ]

6 голосов
/ 19 июля 2009

Я предполагаю, что это фрагменты HTML, а не полные страницы. Вы можете преобразовать их в частичные представления - довольно тривиально, вы просто добавляете правильную директиву страницы и переименовываете в .ascx. Тогда вы бы использовали Html.RenderPartial, чтобы включить частичное в ваш основной вид. Другой способ - создать собственное расширение HtmlHelper, которое работает как RenderPartial, но просто читает именованный файл и записывает его в ответ так же, как вы это делаете в настоящее время.

Ex1:

 <% Html.RenderPartial( "welcome.ascx" ); %>

Ex2:

 <% Html.RenderHtml(  Server.MapPath( "newletters/welcome.html" ) ); %>

Обратите внимание, что в первом случае файл представления должен находиться в каталоге Views. Во втором случае вы можете ссылаться на файл из любого места, где рабочий процесс имеет доступ для чтения. Вам нужно будет создать второй метод самостоятельно. Возможно, что-то похожее на:

 public static class MyHtmlHelperExtensions
 {
      public static void RenderHtml( this HtmlHelper helper, string path )
      {
           var reader = new StreamReader( path );
           var contents = reader.ReadToEnd();
           helper.ViewContext.HttpContext.Response.Write( contents );
      }
  }

Обратите внимание, что вам придется добавить обработку ошибок.

0 голосов
/ 22 августа 2017

Вы должны написать так:

string html = System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath("~/htm/external/header.htm"));
0 голосов
/ 19 июля 2009

Чтобы прочитать содержимое текстового файла в .Net, используйте метод File.ReadAllText .

Точный эквивалент вашего фрагмента кода будет

<%= File.ReadAllText(Server.MapPath("newsletters/welcome.html")) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...