Привет!
У меня проблема с двумя выпадающими списками.Родитель функционирует очень просто.После правильного выбора в родительском DDL дочерний DDL включается автоматически, и я получаю перехват XHR, который возвращает правильные данные JSON, но затем дочерний DDL не может отобразить эти данные.
CSHTML:
@* Parent DDL *@
@(Html.Kendo().DropDownListFor(m=>m.AccountCode)
.OptionLabel("Service Type...")
.DataTextField("Name")
.DataValueField("Code")
.BindTo(ViewBag.AccountCodes)
.HtmlAttributes(new { @class = "form-control", style = "width: 100%", required = "required" })
)
@* Child DDL *@
@(Html.Kendo().DropDownListFor(m => m.ServiceFinderId)
.HtmlAttributes(new { @class = "form-control", style = "width: 100%" })
.OptionLabel("Select service...")
.DataTextField("Name").DataValueField("Id")
.Filter(FilterType.Contains)
.Height(450)
.DataSource(source =>
{
source.Read(read =>
{
read.Action("GetAllServices", "AjaxApi").Type(HttpVerbs.Post)
.Data("ServiceFinderIdFilter");
})
.ServerFiltering(false);
})
.Enable(false)
.AutoBind(false)
.CascadeFrom(Html.IdFor(m => m.AccountCode).ToString())
)
JavaScript
function ServiceFinderIdFilter() {
return {
accountCode: $("#" +'@Html.IdFor(m=>m.AccountCode)').val()
};
}
C #
public async Task<JsonResult> GetAllServices(string accountCode)
{
var result = await serviceClient.GetServiceList(true, null, string.Empty, new[] { accountCode });
if (result == null)
{
return Json("", JsonRequestBehavior.AllowGet);
}
return Json(result.Select(s => new { Id = s.Code, Name = $"#{s.Code:D4} {s.Name}, Fee: {s.Fee:0.##}" }).ToList(), JsonRequestBehavior.AllowGet);
}
Если я отлаживаю, я вижу, что с контроллера отправляется правильный набор результатов.В chrome ответ на вызов XHR тоже хороший JSON.Но, в конце концов, дочерний DDL не показывает данных