1

我在 C# 和 Razor 中有一个 ASP.NET MVC3 应用程序。

_Layout.cshtml在 VS2010 中使用 MVC3 应用程序模板中的标准。我想在渲染Partial View时在其中一个中添加 Javascript 代码,View而不是直接在_Layout.

我的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>并且看起来非常难看。我可以直接在<head>_Layout 部分添加 Javascript,但这不是我想要的。我怎样才能达到我的目的?

4

1 回答 1

5

在主布局(母版页)中添加@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", required: false) 的位置。如果局部视图上没有 @section 块,则不会添加任何内容。

于 2012-12-14T11:42:56.667 回答