此问题类似于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(新视图名称),则自动完成功能无法正常工作...
请告诉我如何解决它而不需要太多修改......
答案 0 :(得分:26)
您无法在部分视图中使用部分。他们根本行不通。因此,您必须在视图中保留@section JavaScript
才能注册脚本,然后呈现仅包含标记的部分。您还可以编写自定义帮助程序方法来实现此目的,如this answer。
答案 1 :(得分:2)
正如我所知,部分视图需要包含所有脚本的引用,即使您已在master / layout页面中引用它。我一直在做的是创建一个局部视图(_Scripts.cshtml)并将所有脚本+样式表引用放入其中。然后,我将在每个视图中调用此部分视图:
@Html.Partial("_Scripts")
希望这是你想要的,谢谢:)。