加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 用于KendoUI AutoComplete的开箱即用的MVC Model

发布时间:2020-12-16 06:27:01 所属栏目:asp.Net 来源:网络整理
导读:我无法找到一种方法来轻松读取KendoUI AutoComplete小部件发送的ajax发布值. documentation缺乏关于此任务的任何细节.事实上,我能找到的服务器端代码示例如下: namespace Kendo.Mvc.Examples.Controllers{ using System.Web.Mvc; public partial class Auto
我无法找到一种方法来轻松读取KendoUI AutoComplete小部件发送的ajax发布值.

documentation缺乏关于此任务的任何细节.事实上,我能找到的服务器端代码示例如下:

namespace Kendo.Mvc.Examples.Controllers
{
    using System.Web.Mvc;

    public partial class AutoCompleteController : Controller
    {
        public ActionResult ServerFiltering()
        {
            return View();
        }
   }
}

我期待传入的数据自动绑定到Kendo.Mvc.UI.DataSourceRequest,但这不会发生……

如果您有效地处理了KendoUI AutoComplete小部件,请分享您的体验,TIA!

解决方法

@David Perlman,我完全正在编辑这个答案,因为我现在更好地理解你的问题.在服务器过滤的Kendo示例中,他们使用OData,它具有开箱即用的服务器过滤功能,这是我自己并不了解的.如果您像我一样使用MVC控制器,则必须修改示例并使用 parameterMap,就像我将在我的新代码示例中使用的那样.在我的示例中,我有一个简单的“站点”表我使用实体框架,我有一个直接连接到Sites表的视图.我有一个名为Lookups.cs的类,我返回一个动态模型GetSitesStartsWith(string startsWith)像这样:

public dynamic GetSitesStartsWith(string startsWith)
    {
        return _context.vAaiomsSites
            .Select(s => new
            {
                ID = s.ID,SiteName = s.SiteName
            }).OrderBy(s => s.SiteName).Where(s => s.SiteName.StartsWith(startsWith));
    }

所以在我的申请单控制器中,我创建了一个像这样的JsonResult:

public JsonResult GetSitesStartsWith(string startsWith)
    {

        var lookups = new Lookups();
        var data = lookups.GetSitesStartsWith(startsWith);
        return Json(data,JsonRequestBehavior.AllowGet);
    }

最后要做的是将AutoComplete代码添加到连接到此JsonResult的View而不是OData,如下所示:

<div id="example" class="k-content">
        <div class="demo-section">
            <h2>Sites</h2>
            <input id="sites" style="width: 250px" />
        </div>
        <script>
            $(document).ready(function() {
                $("#sites").kendoAutoComplete({
                    placeholder: "Enter site ...",dataTextField: "SiteName",filter: "startswith",minLength: 3,dataSource: {
                        type: "json",serverFiltering: true,serverPaging: true,pageSize: 20,transport: {
                            read:
                                {
                                    url: "Requisitions/GetSitesStartsWith"
                                },//read
                            parameterMap: function() {// send value of autocomplete as the "startsWith" parameter
                                        return { 
                                               startsWith:$("#sites").data("kendoAutoComplete").value()
                                        };
                            }
                        } //transport
                    } //datasource
                }); //kendoAutoComplete
            }); //DocumentReady
        </script>
</div>

我有这个例子工作,它在服务器上进行过滤,用开发人员工具验证.如果您需要更多帮助,请与我们联系.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读