从ASP.NET MVC3中的部分视图加载Javascript

Cic*_*ami 1 javascript partial-views asp.net-mvc-3

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

我使用_Layout.cshtmlVS2010中MVC3应用程序模板的标准.我想在渲染Partial View时添加Javascript代码,View而不是直接在Javascript中添加Javascript _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>
}
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

如果我这样离开View,Javascript会在里面呈现<body>,看起来非常难看.我可以直接在<head>_Layout 的部分添加Javascript,但它不是我想要的.我怎样才能达到目的?

Ph0*_*n1x 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>    
    } 
Run Code Online (Sandbox Code Playgroud)

在你的局部视图中

当razor编译html页面时,它会将@section块中的内容从局部视图放到你在布局(母版页)上放置@RenderSection("HeadContent",required:false)的地方.如果局部视图上没有@section块,则不会添加任何内容.