0

这是我在 .cshtml 中的代码

@using (Ajax.BeginForm("Search","Home",
    new AjaxOptions
    {
        UpdateTargetId = "SearchResults",
        HttpMethod ="GET",
        InsertionMode = InsertionMode.Replace
    }
))
{
    <input type="text" id="q" data-autocomplete="@Url.Action("QuickSearch", "Home")"   />
    <input type="submit" value="Search"  />
}
<table id="SearchResults">
</table>

在 .js 文件中:

$(document).ready(function () {
    $(":input[data-autocomplete]").each(function () {
         $(this).autocomplete({ source: $(this).attr("data-autocomplete") });
    });
});

在 HomeController.cs 我的快速搜索是:

public ActionResult QuickSearch(string term)
{
    var _restaurant = context.Books.Where(r => r.BookTitle.Contains(term) )
                    .Take(10)
                    .Select(r => new
                    {
                        label = r.BookTitle
                    });
    return Json(_restaurant, JsonRequestBehavior.AllowGet);
}

我加了jquery-1.5.1.min.js, jquery-ui.css, jquery-ui.js, jquery.unobtrusive-ajax.min.js,modernizr-1.7.min.js

我的搜索按钮工作得很好,但是当我在 QuickSearch 方法上放置断点并调试它时,我的自动完成功能根本不起作用,甚至没有调用该方法,它从不调用和执行该方法。但是为此

<a href="@Url.Action("QuickSearch", "Home")">url</a>

它工作得很好。

同样在我的其他项目中,一切正常。

我真的很感激任何帮助。

4

1 回答 1

0

我解决了这个问题。我的页面中有一个部分视图,顶部有这些:

<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

所以我从部分视图中删除了这个脚本块,它现在可以工作了。

于 2013-07-22T16:39:29.563 回答