我正在使用razor视图引擎开发MVC应用程序。
HTML,Head和Body标签放在共享视图_Layout.cshtml中,其他视图将其用作布局。
在支持应用程序时,我需要在某些页面中添加自定义属性(不是在所有页面中)。如果我在布局中添加属性,它将出现在所有页面中。您能否高兴地指导我如何仅在所需页面中管理添加属性。
下面是我的html标签,其属性为:
<html ng-app="business_rules">
答案 0 :(得分:1)
您可以创建一个需要所有这些属性的布局,并使用
将此布局引用到所需的页面@{
Layout = "Path/To/Layout.cshtml";
}
位于这些页面的顶部。
对于其余页面,您将使用不具有这些属性的不同布局。
您也可以从控制器中定义布局。它可以按如下方式完成:
public ActionResult Index()
{
MyMOdel model = new MyMOdel ();
//TO DO:
return View("Index", "_AdminLayout", model);
}
答案 1 :(得分:1)
我会使用jquery。只需在代码后面添加您需要此属性的页面:
<script>
$(document).ready(function(){
$('html').attr("ng-app", "business_rules")
});
</script>
答案 2 :(得分:0)
我现在遇到了完全相同的问题,我想出的最佳解决方案如下(我真的不想为body标签上的属性添加完全独立的布局)。您对asp net forums以及
提出了一些建议我在视图包中添加了一个项目,一个名为BodyAttributes的(可能是过度的)通用名称:
ViewBag.BodyAttributes = "ng-app=\"moduleName\"";
然后我在body标签上用纯htlm渲染它
<body @Html.Raw(ViewBag.BodyAttributes)>
这使您的布局不会特定于页面,并且不需要在每个视图上引导角度。此外,角度是否自动引导现在可以从它所属的视图本身内进行控制。