我想在尝试在MVC 4中添加自动完成功能时遗漏了一些明显的东西。根据我在其他文章中发现的内容,我已经可以整理出一个示例,但是未调用控制器中的方法。
到目前为止我尝试过的...
_布局
@Styles.Render("~/Content/themes/base/css")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryui")
@Scripts.Render("~/bundles/jqueryval")
控制者
Public Function Numbers(term As String) As ActionResult
Return Json(New String() {"one", "two", "three", "four", "five", "six"}, JsonRequestBehavior.AllowGet)
End Function
查看(我现在已经硬编码了家庭/电话号码)
<div class="editor-label">
@Html.LabelFor(Function(model) model.Number)
</div>
<div class="editor-field">
@Html.EditorFor(Function(model) model.Number)
@Html.ValidationMessageFor(Function(model) model.Number)
</div>
<script type="text/javascript">
$(function () {
$("#Number").autocomplete({
source: 'Home/Numbers',
minLength: 1
});
});
</script>
当我运行我的应用程序并在文本框中键入内容时,没有任何反应。我在“ Numbers”函数中设置了一个断点,似乎从未调用过该断点。
我的项目可以在这里找到http://www.filedropper.com/testapp
最佳答案
如果布局中@Scripts.Render
元素的底部和body
之后有@RenderBody()
行,则需要将脚本放在scripts
部分中:
@section scripts
<script type="text/javascript">
$(function () {
$("#Number").autocomplete({
source: '@Url.Action("Numbers","Home")',
minLength: 1
});
});
</script>
End Section
因为您的脚本依赖于jQuery,所以应该先加载jQuery。
或者只是将
@Scripts.Render
声明移到布局中的head
中,则无需将代码放入scripts
部分(但最好使用该部分)关于jquery - 使用MVC 4/Razor自动完成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13455610/