使用MVC 4/Razor自动完成

New*_*ewm 15 asp.net-mvc jquery razor

我想在尝试在MVC 4中添加自动完成功能时,我遗漏了一些明显的东西.从我在其他帖子中找到的内容,我已经能够将一个示例放在一起但是我的控制器中的方法没有被调用.

到目前为止我尝试过的...

_布局

@Styles.Render("~/Content/themes/base/css")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryui")
@Scripts.Render("~/bundles/jqueryval")
Run Code Online (Sandbox Code Playgroud)

调节器

Public Function Numbers(term As String) As ActionResult
    Return Json(New String() {"one", "two", "three", "four", "five", "six"}, JsonRequestBehavior.AllowGet)
End Function
Run Code Online (Sandbox Code Playgroud)

查看(我现在硬编码了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>
Run Code Online (Sandbox Code Playgroud)

当我运行我的应用程序并输入文本框时,没有任何反应.我在"Numbers"函数中放了一个断点,它似乎永远不会被调用.

我的项目可以在http://www.filedropper.com/testapp找到

nem*_*esv 15

如果在布局中元素@Scripts.Render底部有行,则需要将脚本放在以下部分中:body@RenderBody()scripts

@section scripts
<script type="text/javascript">
    $(function () {
        $("#Number").autocomplete({
            source: '@Url.Action("Numbers","Home")',
            minLength: 1
        });
    });
</script>
End Section
Run Code Online (Sandbox Code Playgroud)

因为你的脚本依赖于jQuery所以应该首先加载jQuery.

或者只是将您的@Scripts.Render声明移到head布局中,然后您不需要将代码放入该scripts部分(但最好使用该部分)