Добавить атрибуты в тег HTML только для определенных видов?
Я работаю над приложением MVC с движком просмотра бритвы.
Теги HTML, Head и Body размещаются в общем представлении _Layout.cshtml, и другие представления используют его в качестве макета.
При поддержке приложения мне нужно добавить пользовательский атрибут на некоторых страницах (не на всех страницах). Если я добавлю атрибут в макет, он появится на всех страницах. Можете ли вы с удовольствием рассказать мне, как добавить атрибут можно только на нужных страницах.
Ниже мой HTML-тег с атрибутом:
<html ng-app="business_rules">
3 ответа
Вы можете создать макет, где вам нужны все эти атрибуты, и просто использовать этот макет для нужных страниц, используя
@{
Layout = "Path/To/Layout.cshtml";
}
в верхней части этих страниц.
Для остальных страниц вы будете использовать другой макет без этих атрибутов.
Вы также можете определить макет формы контроллера. Это можно сделать, как показано ниже:
public ActionResult Index()
{
MyMOdel model = new MyMOdel ();
//TO DO:
return View("Index", "_AdminLayout", model);
}
Я бы использовал jquery. Просто добавьте на страницы, где вам нужен этот атрибут, следующий код:
<script>
$(document).ready(function(){
$('html').attr("ng-app", "business_rules")
});
</script>
Я столкнулся с точно такой же проблемой прямо сейчас, и лучшим решением, которое я нашел, было следующее (я не хочу добавлять совершенно отдельный макет только для атрибута в теге body). У вас есть пара предложений на форумах asp net
Я добавил элемент в сумку вида, (вероятно, чрезмерно) универсальный, который называется BodyAttributes:
ViewBag.BodyAttributes = "ng-app=\"moduleName\"";
Затем я отрисовываю это в чистом htlm теге body
<body @Html.Raw(ViewBag.BodyAttributes)>
Это делает ваш макет не специфичным для страницы, и угол не нужно загружать при каждом просмотре. Плюс, то, является ли угол загруженным, теперь контролируется изнутри самого вида, где он принадлежит.