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

Отключить макет в ASP.NET MVC?

В MonoRail вы можете просто CancelLayout() не отображать макет. В ASP.NET MVC единственный способ повлиять на макет, похоже, заключается в том, чтобы передать имя макета в метод View(), например View ( "myview", "mylayout" ); только кажется, что передача нулевой или пустой строки не делает то, что я хочу.

В итоге я создал пустой макет, который просто отображал содержимое, но это кажется глупым.

"Не показывать макет" означает именно это. В режиме просмотра веб-форм они называют макеты "главными страницами". Я хочу отобразить только свое действие и не окружать его главной страницей.

4b9b3361

Ответ 1

Кажется, это было невозможно в версии ASP.NET MVC, о которой я спрашивал.

Ответ 2

В MVC 3 вы можете удалить основной код макета с помощью:

   @{
    Layout = "";    
    }

Ответ 3

В начале представления добавьте это:

@{
    Layout = null;
}

Если вы хотите сохранить таблицу стилей, вам нужно добавить ссылку на нее в этом представлении.

Ответ 4

В действии Controller мы можем установить требуемый макет.

return View("Index", "_LAYOUT_NAME", model);

fooobar.com/questions/24736/...

Ответ 5

Чтобы отключить это для всех страниц, отредактируйте _ViewStart.cshtml(в корневом каталоге в папке "Представления" ) и убедитесь, что он содержит следующее:

@{
  Layout = null;
}

И чтобы включить шаблон для какого-либо определенного вида, в файл .cshtml для этого представления можно добавить следующее: чтобы включить шаблон:

@{
  Layout = "~/Views/Shared/_Layout.cshtml";
}

Ответ 6

Вместо обычного просмотра создайте частичный вид. Они могут использоваться сами по себе, что очень похоже на CancelLayout() - или вы можете включить их в представление, ссылающееся на главную страницу, и в этом случае это будет полный макет. Они также полезны, если вы хотите отправить частичный фрагмент HTML в ответ на запрос AJAX.

Ответ 7

Не повезло ли вы установить параметр masterPage в "" или null и вернуть View (например, я не сделал)?

Затем попробуйте это и используйте PartialView вместо этого:

   public ActionResult Article(string id)
    {
        return PartialView("~/Areas/Store/Views/CustomerService/" + id);
    }

Мне нужно было сделать это, чтобы асинхронно загружать содержимое представления из JS.

Ответ 8

Вы можете создать пользовательский ActionResult, который делает почти что угодно. ActionResult контролирует то, что отправлено обратно клиенту в качестве ответа. Было бы тривиально создать класс, который расширяет ActionResult, который ничего не делает.

Ответ 9

Если вы хотите отображать содержимое в выходной поток, просто верните EmptyResult из вашего действия вместо ViewResult.

Ответ 10

Требуется ли ваше представление иметь главную страницу - они являются необязательной функцией WebForms? Кроме того, вы просматриваете html внутри своего представления?

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