我想我在尝试在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
查看(我现在已经硬编码了Home / Numbers)
<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>
当我运行我的应用程序并在文本框中键入没有任何反应.我在“数字”功能中放了一个断点,似乎从来没有被调用过.
我的项目可以在这里找到http://www.filedropper.com/testapp
解决方法
如果您在布局中的body元素的底部有@ Scripts.Render行,并且在@RenderBody()之后,您需要将脚本放在脚本部分中:
@section scripts <script type="text/javascript"> $(function () { $("#Number").autocomplete({ source: '@Url.Action("Numbers","Home")',minLength: 1 }); }); </script> End Section
因为你的脚本依赖于jQuery,所以jQuery应该先加载.
或者只需将@ Scripts.Render声明移动到布局中的头部,那么您不需要将代码放入脚本部分(但是使用该部分更好)