为什么Kendo DropDownlist初始化时不能调用action方法
Why Kendo DropDownlist can not call action method when initialized
我有一个 Kendo 下拉列表如下
<%= 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 中动态重新加载其内容。谢谢。
尝试按如下方式更新您的操作:
[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 根据父下拉菜单值过滤值。
只是因为 DropDownList 不使用 POST 来获取数据。删除 [HttpPost]
或指定您要在数据源的传输配置中使用 POST。
我没有检查你的方法是否正确完成,但这就是它根本没有被调用的原因。
我有一个 Kendo 下拉列表如下
<%= 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 中动态重新加载其内容。谢谢。
尝试按如下方式更新您的操作:
[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 根据父下拉菜单值过滤值。
只是因为 DropDownList 不使用 POST 来获取数据。删除 [HttpPost]
或指定您要在数据源的传输配置中使用 POST。
我没有检查你的方法是否正确完成,但这就是它根本没有被调用的原因。