Выпадающий список Kendo создает TypeError: n.slice не является функцией
Нужно ли определять схему? Если да, то как это должно выглядеть? Мои поиски для этого, похоже, только для включения js-решений, я ищу синтаксис, чтобы определить его в editortemplate.
Shared/editortemplate:
@(
Html.Kendo().DropDownList()
.Name("SearchFunction")
.DataTextField("SearchFunctionDesc")
.DataValueField("SearchFunctionCode")
.DataSource(source =>
{
source.Read(read => {
read.Action("GetSearchFunctions", "User");
});
})
.OptionLabel("--Select a Search Function--")
.AutoBind(false)
)
В контроллере:
public JsonResult GetSearchFunctions([DataSourceRequest] DataSourceRequest request)
{
var searchFuncs = AdminService.GetSearchFunctions();
DataSourceResult result = searchFuncs.ToDataSourceResult(request);
return Json(result, JsonRequestBehavior.AllowGet);
}
И затем мой запрос dapper db:
var result = new List<SearchFunction>();
using (var conn = new OracleConnection(DatabaseConnectionString))
{
conn.Open();
string query = "select FUNCTION_ID, SEARCH_FUNCTION_CD, " +
"SEARCH_FUNCTION_DESC, IS_ACTIVE " +
"from TBL_SEARCH_FUNCTIONS ";
result = conn.Query(query)
.Select(s => new SearchFunction
{
FunctionId = (int)s.FUNCTION_ID,
SearchFunctionCode = s.SEARCH_FUNCTION_CD,
SearchFunctionDesc = s.SEARCH_FUNCTION_DESC,
Active = s.IS_ACTIVE
}).ToList<SearchFunction>();
conn.Close();
return result;
}
Ответы
Ответ 1
Перепишите свой метод контроллера следующим образом:
public JsonResult GetSearchFunctions()
{
var searchFuncs = cmsViewAdminService.GetSearchFunctions();
return Json(searchFuncs, JsonRequestBehavior.AllowGet);
}
Это должно упростить этот метод, поскольку вам не нужен DataSourceRequest (как @CSharper, упомянутый в комментарии). Kendo DropDownLists, в отличие от сеток, не требует класса DataSourceRequest. Таким образом, вы можете вызвать тот же JsonResult из jQuery Ajax, если вам нужно это сделать.
Ответ 2
Вам нужно вернуть чистую коллекцию из json, которая выглядит так:
{[
{"Id":2,"Name":"some"},
{"Id":3,"Name":"som2"}
]}
Ответ 3
Если вы используете ModelView и лямбда, вы также можете попробовать выполнить следующий код:
Предположим, у вас есть раскрывающийся список города, который извлекает данные из справочной таблицы (заполненной в CityViewModel):
public JsonResult GetCities()
{
var dataContext = new EFDbContext();
var cities = dataContext.Cities.Select(c => new CityViewModel
{
ID = c.ID,
Name = c.Name
});
return Json(cities, JsonRequestBehavior.AllowGet);
}
С уважением.