Подтвердить что ты не робот

Есть ли возможность просмотра Razor с ASPX. Возможно, страница мастера?

Возможно ли сохранить существующую страницу .master и использовать ее с новым представлением ASP.NET MVC 3 Razor? Я пробовал это:

@{
   LayoutPage = "~/Views/Shared/Site.master";
 }

И это дает мне это сообщение об ошибке:

Файл '~/Views/Shared/Site.master' не может быть отображен, потому что он не существует или не является допустимой страницей.

4b9b3361

Ответ 1

К сожалению нет. Основные страницы являются частью механизма просмотра ASPX WebForms, а не структуры MVC, поэтому Razor не может взаимодействовать с ним.

Одним из вариантов было бы дублирование мастеров, как вы упомянули, но вместо копирования всего кода вы могли бы занести главную страницу в кучу частичных элементов ASPX, которые могут вставлять мастера Razor и ASPX. Затем вы можете начать преобразовывать каждую страницу и частично, один за другим, в Razor и в конечном итоге избавиться от мастера ASPX.

Ответ 2

На самом деле есть способ сделать это. У Скотта Ханслемана есть сообщение в блоге по теме: http://www.hanselman.com/blog/MixingRazorViewsAndWebFormsMasterPagesWithASPNETMVC3.aspx

Это немного хакерский, но выполнимый. Я думаю, что описанный подход может быть инкапсулирован и очищен еще больше, чтобы вы могли создавать свои взгляды и контроллеры, не беспокоясь о том, как вещи связаны друг с другом.

Ответ 3

Я думаю, вам нужно искать _Layout.cshtml в общей папке...

Вот сравнение между механизмом просмотра aspx и razor....

http://weblogs.asp.net/shijuvarghese/archive/2010/07/29/aspx-and-razor-view-engines-in-asp-net-mvc-3-preview-1.aspx

это также интересный пост о вложенных мастер-страницах с бритвой...

http://weblogs.asp.net/fredriknormen/archive/2010/08/01/asp-net-mvc-3-0-preview-1-razor-and-nested-master-pages.aspx

НТН

Ответ 4

Поддержка пользовательских элементов управления .NET в MVC

MVC официально не поддерживает .Net User Controls, но вы можете получить html, созданный ими. Следующий код извлекает HTML-код, созданный на странице, состоящей из десятков файлов ASCX.

  • Создайте страницу ASP, содержащую ваши .Net-элементы управления пользователя на вашем сайте MVC.
  • Получить строку HTML, создаваемую вашими пользовательскими элементами управления.
  • Используйте строку HTML на странице Макет MVC.

Пример кода:

try{

    using (WebClient client = new WebClient())  
    {

        client.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13";

        myHTML = client.DownloadString("http//www.mysite.com/header.aspx");
    }

} catch ( WebException exception )

{

    using(var reader = new StreamReader(exception.Response.GetResponseStream())){

        Response.Write(reader.ReadToEnd());

    }

}

@Html.Raw(myHTML ); //OR Response.Write(myHTML);

@RenderBody(); 

Ответ 5

Пробыв сам этот процесс, я обнаружил, что этот метод Matt Hawley работал с удовольствием.

Этот подход работает, создавая стандартную страницу aspx, которая использует вашу требуемую главную страницу. Затем вы можете добавить заполнители материалов по мере необходимости. Затем вы вызываете RenderPartial с именем используемого представления. Ответ от вашего контроллера затем передается вниз до фактического представления, которое вы хотите отобразить.

Для выполнения этой работы требуется немного больше сантехники, и вам нужно вызвать метод расширений для визуализации вашего представления в контроллере, но как только вы его настроите, он работает очень хорошо.