【问题标题】:ASP.NET MVC & ASP.NET AJAX Toolkit AutoCompleteExtenderASP.NET MVC & ASP.NET AJAX 工具包 AutoCompleteExtender
【发布时间】:2009-09-22 13:59:31
【问题描述】:

我能否让 ASP.NET AJAX AutoCompleteExtender 使用 ASP.NET MVC JsonResult 而不是 ASMX Webservice?

我在 ASP.NET MVC 视图上有一个 ASP.NET AJAX 工具包 AutoCompleteExtender。它在我的 MVC 控制器中使用了 JsonResult 类型的函数。

ASP.NET MVC 视图:

<form runat="server">
    <asp:ScriptManager
        ID="ScriptManager1"
        runat="server"
        EnableScriptGlobalization="true" />
    <ajaxToolkit:AutoCompleteExtender 
        ID="autoComplete1"
        runat="server" 
        TargetControlID="TextBox1"
        ServiceMethod="find"
        ServicePath="/thing"
        MinimumPrefixLength="1"
        CompletionInterval="1000"
        EnableCaching="true"
        CompletionSetCount="20"
        DelimiterCharacters=";"
        ShowOnlyCurrentWordInCompletionListItem="true" />
    <asp:TextBox
        ID="TextBox1"
        runat="server" />
</form>

ASP.NET MVC 控制器:

<AcceptVerbs(HttpVerbs.Post)> _
Function Find(ByVal collection As FormCollection) As JsonResult
    Dim search As String = collection(0)
    Dim j As New JsonResult
    j.Data = ...
    Return j
End Function

失败,因为 collection.Count 为 0。另外,Request.QueryString.Count 为 0。

如何将键入的字符串传递给我的 Find() 函数?

【问题讨论】:

    标签: .net asp.net asp.net-mvc json asp.net-ajax


    【解决方案1】:

    遗憾的是,ASP.NET AJAX AutoComplete Extended需要 SOAP Web 服务。

    也就是说,CodePlex 上提供了源代码,因此您可以修改它以获取 JSON 字符串。

    就我个人而言,因为我在网站的其他地方使用 jQuery,所以我决定不使用 ASP.NET AJAX 的东西并使用 jQuery 插件 (jQuery.Autocomplete)

    这有以下额外好处:

    1. 接受 JSON 字符串。
    2. 只需要 2 个脚本引用(jQuery 和 AutoComplete 脚本),而不是 ASP.NET AJAX 选项所需的 7 个。
    3. 我可以轻松获得 jQuery 和 AutoComplete 的缩小版本,但 ASP.NET AJAX 下载中的仅客户端脚本未缩小(除非我错过了什么)。

    很明显,如果您已经在其他地方加载了框架以用于其他事情,那么您的里程可能会有所不同。

    【讨论】:

    【解决方案2】:

    如果使用 ASMX Web 服务的想法有问题,另一种选择是将自动完成控件配置为调用页面方法,该方法可以驻留在相关页面(或控件)后面的代码中。

    可以在here 找到有关如何设置的概述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多