我有一个 ASP.NET 的 C# 和 Razor 中的 MVC3 应用程序。
我在VS2010中使用MVC3应用程序模板中的标准_Layout.cshtml
。我想在渲染View
时在我的一个Partial View
中添加 Javascript 代码,而不是直接在_Layout
中附加 Javascript。
我的View
如下所示:
@model MyNameSpace.ViewModels.MyViewModel
@{
ViewBag.Title = "Home Page";
}
<h2>@ViewBag.Message</h2>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Filters</legend>
@{ Html.RenderPartial("Filters", Model.Filters); }
<p>
<input type="submit" value="Submit" />
</p>
</fieldset>
}
我的Partial View
Filters.cshtml
看起来像这样:
@model MyNameSpace.ViewModels.FiltersViewModel
<p>
@Html.DropDownListFor(
x => x.Type,
new SelectList(Model.Types, "Value", "Text"),
"-- select type --"
)
</p>
<p>
@Html.DropDownListFor(
x => x.Category,
new SelectList(Model.Categories, "Value", "Text"),
"-- select category --"
)</p>
<script type="text/javascript">
//Some Javascript
</script>
如果我像这样离开View
,Javascript会在<body>
内渲染,看起来非常丑陋。我可以直接在_Layout的<head>
部分添加Javascript,但这不是我想要的。我怎样才能实现我的目的?
主布局(母版页)中添加@RenderSection("HeadContent", required: false)
,然后添加类似
@section HeadContent {
<link href="@Url.Content("~/Content/styles/admin.css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
}
在您的部分视图中
当 razor 编译 html 页面时,它会将内容从部分视图@section块放置到您在布局(母版页)上放置@RenderSection("HeadContent",必需:false)的位置。如果分部视图上没有@section块,则不会添加任何内容。