Как привязать вложенный json к ядру Kendo Dropdownlist asp .net?

я пробовал привязку сервера в раскрывающемся списке кендо asp dot net core. Но данные не привязываются, если возвращаемый json находится во вложенном формате.

public async Task<IActionResult> GetListOfMenuCategory()
            {
                try
                {
                    var Categories = (await _menuCategoryRepo.GetAllAsync().ConfigureAwait(true));

                var menuCategoriesResponseData = Categories.Select(i => new
                { categoryId = i.CategoryId, name = i.Name}).ToList();
                return await this.SendSuccess(menuCategoriesResponseData).ConfigureAwait(true);
            }
            catch (Exception Ex)
            {
                _logger.LogError(Ex, Ex.Message);
                return await this.SendError(Ex.Message).ConfigureAwait(true);
            }
        }

он возвращает json в этом формате

"data":[{"categoryId":1,"name":"Momo"}]}

Код MY View для привязки данных к выпадающему списку кендо

 @(Html.Kendo().DropDownListFor(a => a.MenuCategoryId)
                                .HtmlAttributes(new {style = "width:100%"})
                                .OptionLabel(new {
                                    name = "All",
                                    categoryId = 0})
                                .DataTextField("name")
                                .DataValueField("categoryId")
                                .DataSource(source =>
                                {
                                    source.Read(read =>
                                    {
                                        read.Action("GetListOfMenuCategory", "MenuCategory");
                                    });
                                })
                                )

вывод пустой drodown... может ли кто-нибудь помочь мне в этом.


person Roshan Gurung    schedule 14.04.2021    source источник


Ответы (1)


Пожалуйста, измените свой внутренний код, правильный json должен быть:

[{"categoryId":1,"name":"Momo"}]

Результат:

введите здесь описание изображения

Мой внутренний тестовый код:

public async Task<IActionResult> GetListOfMenuCategory()
{
    var model = new List<Model>()
    {
        new Model(){ categoryId=1,name="Momo"}
    };
    return Json(model);
}

Обновление:

Если вы не хотите менять json, боюсь, это не поддерживается Kendo MVC DropDownList. Он всегда ожидает от сервера массив JSON. Этого можно достичь, инициализировав DropDownList через JavaScript и используя параметр данных схемы:

@Html.TextBoxFor(m => m.MenuCategoryId)
   
<script>
    $(function () {
        jQuery("#MenuCategoryId").kendoDropDownList({
            dataSource: {
                transport: {
                    read: {
                        url: "/MenuCategory/GetListOfMenuCategory"
                    }
                },
                schema: {
                    data: "data"     //the importance here
                },
                serverFiltering: true
            },
            dataTextField: "name",
            dataValueField: "categoryId",
            index: 0
        });
    });
</script>
person Rena    schedule 14.04.2021
comment
спасибо за ваш ответ ... но я хочу знать, можно ли привязать такой вложенный json к раскрывающемуся списку кендо ... мне нужно найти способ привязать вложенный json к раскрывающемуся списку .... - person Roshan Gurung; 15.04.2021
comment
Нет, ты не можешь. Вы должны использовать json, как я указал выше. - person Rena; 15.04.2021
comment
Привет @RoshanGurung, проверьте мой обновленный ответ. Если мой ответ поможет вам решить вашу проблему, не могли бы вы принять его в качестве ответа? См.: Как принять в качестве ответа .Спасибо. - person Rena; 16.04.2021
comment
Спасибо большое...было очень полезно - person Roshan Gurung; 16.04.2021