为什么Kendo DropDownlist在初始化时无法调用action方法

时间:2015-02-10 05:50:33

标签: kendo-ui kendo-dropdown

我有一个Kendo DropDownlist如下

<%= Html.Kendo().DropDownList()
        .Name("AssignDisciplineId")
        .DataSource(dataSource =>
             {
                dataSource.Read(read =>
                {  
                    read.Action("DisciplinesBySportAjax","Shared").Data("onDisciplinesBySportData");                        
                });
              })
        .Events(events => events    
                 .Change("onAssignDisciplineComboChanged")
               )
        .HtmlAttributes(new { style = "font-size:8pt;" })
%>

function onDisciplinesBySportData(e)
{
    var sportId = $('#AssignSportsId').data('kendoDropDownList').value();
    return { sportId: sportId }
}

[HttpPost]
public ActionResult DisciplinesBySportAjax(string sportId)
{
     var sports = this._sportBL.GetDisciplinesBySport(sportId);

     return new JsonResult
     {
         Data = new SelectList(sports, "Id", "Description")
     };
}

但奇怪的是,它没有在datasource.read中执行DisciplinesBySportAjax,并且DropDownList中没有数据出现。当更改为BindTo替换DataSource时,它工作正常,但我不知道如何在Jquery中动态重新加载其内容。谢谢。

2 个答案:

答案 0 :(得分:1)

只是因为DropDownList不使用POST来获取数据。删除[HttpPost]或指定您要在DataSource的传输配置中使用POST。

我没有检查你的方法是否正确完成,但这就是它根本没有被调用的原因。

答案 1 :(得分:0)

尝试更新您的操作,如下所示:

 [HttpPost]
 public ActionResult DisciplinesBySportAjax([DataSourceRequest] DataSourceRequest request, string sportId) 
 {
     var sports = this._sportBL.GetDisciplinesBySport(sportId);

     return new JsonResult
     {
         Data = new SelectList(sports, "Id", "Description")
     }; 
 }

或者,如果您正在寻找级联下拉列表,那么您可以在子下拉列表中使用BindTo并使用JS根据父下拉值过滤值。