![](/img/trans.png)
[英]JsonConvert.DeserializeObject error mvc asp.net newtonjson
[英]ASP.NET MVC - JsonConvert.DeserializeObject to Html.DropDownList
我正在尝试以Json的身份读取一些数据,对其进行反序列化,然后将其显示在我的视图中的DropDownList中。 数据如下所示:
{
"products": [
{
"body_html": "<p> ....</p>",
"created_at": "2012-09-19T11:55:44-04:00",
...
"tags": "Emotive, Flash Memory, MP3, Music",
"variants": [
{
"compare_at_price": null,
"created_at": "2012-09-19T11:55:44-04:00",
...
"inventory_quantity": 10
}
],
"images": [
{
"created_at": "2012-09-19T11:55:44-04:00",
"id": 850703190,
...
}
]
}
]
}
我已经尝试了一些不同的方法,但是没有用。 现在我在控制器中:
var data = Newtonsoft.Json.Linq.JObject.Parse(productsJson.ToString())["products"];
SelectList productsData = JsonConvert.DeserializeObject<SelectList>(data.ToString());
ViewData["products"] = productsData;
并在视图中:
@Html.DropDownList("ProductList", (SelectList)ViewData["products"])
目前,我收到以下错误:
无法创建和填充列表类型System.Web.Mvc.SelectList。
说明:执行当前Web请求期间发生未处理的异常。 请查看堆栈跟踪,以获取有关错误及其在代码中起源的更多信息。
异常详细信息:System.InvalidOperationException:无法创建和填充列表类型System.Web.Mvc.SelectList。
感谢帮助。
我给你另一个解决方案是用json填充你的下拉列表
在我的控制器中,我采取了一项措施,并在国家/地区中填写了国家/地区选择
public JsonResult State(int countryId){
var stateList = CityRepository.GetList(countryId);
return Json(stateList, JsonRequestBehavior.AllowGet);
}
在我看来,我这样绑定我的状态下拉列表
<script type="text/javascript">
function cascadingdropdown() {
$("#stateID").empty();
$("#stateID").append("<option value='0'>--Select State--</option>");
var countryID = $('#countryID').val();
$.ajax({
url: "/City/State",
dataType: 'json',
data: { countryId: countryID },
success: function (data) {
$("#stateID").empty();
$("#stateID").append("<option value='0'>--Select State--</option>");
$.each(data, function (index, optiondata) {
alert(optiondata.StateName);
$("#stateID").append("<option value='" + optiondata.ID + "'>" + optiondata.StateName + "</option>");
});
},
error: function () {
alert('Faild To Retrieve states.');
}
});
}
</script>
我认为这将帮助您...
JSON中的products
与SelectList
类型不兼容。 尝试手动填写SelectList。
首先,您应该将json解析为您的产品类型,然后可以这样使用:
var products = new SelectList(parsedProductList,"valueField here", "textField here");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.