我想在尝试在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/

10-11 16:13