16

这个问题类似于在 ASP.NET MVC 的局部视图中执行 Javascript中描述的问题

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(新视图名称)时,自动完成功能不起作用......

请让我知道如何在没有太多修改的情况下解决它...

4

2 回答 2

29

您不能在局部视图中使用部分。他们根本不工作。因此,您必须将 保留@section JavaScript在视图中才能注册脚本,然后渲染仅包含标记的部分。您还可以编写自定义辅助方法来实现此目的,如本答案所示。

于 2011-10-30T08:36:26.380 回答
2

部分视图需要引用所有脚本,即使您已经在主/布局页面中引用了它。创建一个局部视图(例如:_Scripts.cshtml)并将所有脚本和样式表引用放入其中。然后在每个视图中调用这个局部视图:

 @Html.Partial("_Scripts")
于 2011-10-29T23:18:59.543 回答