如何在asp.net mvc中更改json格式?
我正在尝试使用此链接创建自动完成文本框 但我犯了这个错误 未捕获类型错误:无法读取未定义的属性“长度” 这是我的行动方法如何在asp.net mvc中更改json格式?,json,asp.net-mvc,jquery-ui-autocomplete,Json,Asp.net Mvc,Jquery Ui Autocomplete,我正在尝试使用此链接创建自动完成文本框 但我犯了这个错误 未捕获类型错误:无法读取未定义的属性“长度” 这是我的行动方法 public JsonResult GetNews(string prefix) { var newsList = NewsDataRoot.AutoCompleteTitle(prefix).Select(n => new { value = n.Title, data = n.Id }).ToList(); var myjson =
public JsonResult GetNews(string prefix)
{
var newsList = NewsDataRoot.AutoCompleteTitle(prefix).Select(n => new
{
value = n.Title,
data = n.Id
}).ToList();
var myjson = Json(newsList, JsonRequestBehavior.AllowGet);
return myjson;
}
当我在浏览器中测试它时,它会返回这个结果
[{"value":"this is a test","data":2006}]
我发现格式必须是
{
suggestions: [{
"value": "United Arab Emirates",
"data": "AE"
}, {
"value": "United Kingdom",
"data": "UK"
}, {
"value": "United States",
"data": "US"
}, {
"value": "United Funes",
"data": "DAN"
}]
}
你怎么能做到这一点?
非常感谢
正如你们所看到的,我试过改变结果,但不起作用
<script>
$('#autocomplete').autocomplete({
serviceUrl: '/TestAutoComplete/GetNews',
paramName: 'prefix',
transformResult: function(response) {
return {
suggestions: $.map(response.myData, function(dataItem) {
return { value: dataItem.valueField, data: dataItem.dataField };
})
};
},
onSelect: function (suggestion) {
alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
}
});
</script>
$(“#自动完成”)。自动完成({
serviceUrl:“/TestAutoComplete/GetNews”,
paramName:'前缀',
转换结果:功能(响应){
返回{
建议:$.map(response.myData,函数(dataItem){
返回{value:dataItem.valueField,data:dataItem.dataField};
})
};
},
onSelect:功能(建议){
警报('您选择:'+suggestion.value+','+suggestion.data');
}
});
如果要将数字设置为数字字符串,可以尝试将其值转换为字符串
public JsonResult GetNews(string prefix)
{
var newsList = NewsDataRoot.AutoCompleteTitle(prefix).Select(n => new
{
value = n.Title,
data = n.Id.ToString()
}).ToList();
var myjson = Json(new {suggestions = newsList}, JsonRequestBehavior.AllowGet);
return myjson;
}
尝试此操作,创建一个匿名对象,该对象仅具有
建议
属性
var newsList = NewsDataRoot.AutoCompleteTitle(prefix)
.Select(n => new {
value = n.Title,
data = n.Id
}).ToList();
var myjson = Json(new { suggestions = newsList }, JsonRequestBehavior.AllowGet);
我的问题是如何将{建议:部分添加到json?我认为您需要@kolbeTo才能成为有效的json,它应该用引号括起来,因为名称是字符串,请参阅-谢谢,我删除了transformResult部分,您的解决方案工作得很好!提前感谢!