Javascript无法在Partial View中使用

时间:2011-10-29 19:08:04

标签: asp.net asp.net-mvc-3 asp.net-mvc-partialview

此问题类似于Execute Javascript inside a partial view in ASP.NET MVC

中描述的问题

index.cshtml中的下面一段代码工作正常......


<label for="locationOfSearch"> in :</label> @Html.TextBox("locationOfSearch")

<input type="submit" value="Search"  style="background-color:Green"/>

@section JavaScript {
    <script type="text/javascript">
        $(document).ready(function () {


            $("#locationOfSearch").autocomplete({
                source: '@Url.Action("AutocompleteAsyncLocations")'
            })



        });
    </script>
}

但是,当我将上述代码和相应的脚本文件复制并粘贴到另一个视图,然后在index.cshtml中,如果我调用Html.Partial(新视图名称),则自动完成功能无法正常工作...

请告诉我如何解决它而不需要太多修改......

2 个答案:

答案 0 :(得分:26)

您无法在部分视图中使用部分。他们根本行不通。因此,您必须在视图中保留@section JavaScript才能注册脚本,然后呈现仅包含标记的部分。您还可以编写自定义帮助程序方法来实现此目的,如this answer

所示

答案 1 :(得分:2)

正如我所知,部分视图需要包含所有脚本的引用,即使您已在master / layout页面中引用它。我一直在做的是创建一个局部视图(_Scripts.cshtml)并将所有脚本+样式表引用放入其中。然后,我将在每个视图中调用此部分视图:

 @Html.Partial("_Scripts")

希望这是你想要的,谢谢:)。