【发布时间】:2015-12-01 19:18:57
【问题描述】:
我不确定这是否可能,但我想我会问是否有人这样做过。
我有一本包含美国 50 个州的缩写和全名的州词典。我想要做的是将此字典加载到可以与 Kendo Dropdown 一起使用的 Kendo DataSource 中。但是,我无法找出正确的解决方法。
我尝试将其转换为 JSON 字符串并以这种方式加载,但 Kendo 感到困惑并且不知道它究竟在加载什么。
这是我的字典:
public static Dictionary<string, string> USStates
{
get
{
var states = new Dictionary<string, string>();
states.Add("AL", "Alabama");
states.Add("AK", "Alaska");
states.Add("AZ", "Arizona");
states.Add("AR", "Arkansas");
states.Add("CA", "California");
states.Add("CO", "Colorado");
states.Add("CT", "Connecticut");
states.Add("DE", "Delaware");
states.Add("FL", "Florida");
states.Add("GA", "Georgia");
states.Add("HI", "Hawaii");
states.Add("ID", "Idaho");
states.Add("IL", "Illinois");
states.Add("IN", "Indiana");
states.Add("IA", "Iowa");
states.Add("KS", "Kansas");
states.Add("KY", "Kentucky");
states.Add("LA", "Louisiana");
states.Add("ME", "Maine");
states.Add("MD", "Maryland");
states.Add("MA", "Massachusetts");
states.Add("MI", "Michigan");
states.Add("MN", "Minnesota");
states.Add("MS", "Mississippi");
states.Add("MO", "Missouri");
states.Add("MT", "Montana");
states.Add("NE", "Nebraska");
states.Add("NV", "Nevada");
states.Add("NH", "New Hampshire");
states.Add("NJ", "New Jersey");
states.Add("NM", "New Mexico");
states.Add("NY", "New York");
states.Add("NC", "North Carolina");
states.Add("ND", "North Dakota");
states.Add("OH", "Ohio");
states.Add("OK", "Oklahoma");
states.Add("OR", "Oregon");
states.Add("PA", "Pennsylvania");
states.Add("RI", "Rhode Island");
states.Add("SC", "South Carolina");
states.Add("SD", "South Dakota");
states.Add("TN", "Tennessee");
states.Add("TX", "Texas");
states.Add("UT", "Utah");
states.Add("VT", "Vermont");
states.Add("VA", "Virginia");
states.Add("WA", "Washington");
states.Add("WI", "Wisconsin");
states.Add("WY", "Wyoming");
return states;
}
}
将状态作为 Json 结果返回:
public JsonResult GetStates()
{
var states = States.USStates;
return Json(states, JsonRequestBehavior.AllowGet);
}
尝试将它们加载到 Kendo 下拉菜单中:
function stateFilter(element) {
element.kendoDropDownList({
dataTextField: "Key",
dataValueField: "Value",
dataSource: new kendo.data.DataSource({
transport: {
read: {
url: "/Admin/Company/GetStates",
dataType: "json"
}
}
}),
optionLabel: "-- Select Value --"
});
}
我认为问题出在我告诉 Kendo 它应该查看项目的文本和价值的地方。
当我尝试这样做时,我得到了
的错误Uncaught TypeError: e.slice is not a function in kendo.all.min.js:11
这是返回的 Json 的部分结果:
{"AL":"Alabama","AK":"Alaska","AZ":"Arizona","AR":"Arkansas"}
任何正确方向的指导都将不胜感激!
【问题讨论】:
-
/admin/company/getstates 中的 JSON 格式是否正确?这个反应是什么样的?使用邮递员或类似的。
-
@JonR。我在我的 JSON 外观的帖子中添加了一个代码片段
-
那么结果将是一个具有属性 AL、AK、AZ、AR 的对象,没有名称为 Value 或 Key。我希望看到如下结果: [{"key":"AL", "value":"Alabama"}, {"key":"AK", "value":"Alaska"}] 对象数组具有属性键和值
-
@JonR。我该怎么做呢?抱歉,我对这一切仍然很陌生,并试图理解它。我仍然可以为此使用字典还是需要使用其他东西?
-
你可以映射你从服务器返回的结果,你仍然会从同一个源读取,只需在数据源中使用它之前处理响应