C# 如何遍历从JsonResult方法返回的字典?
我有一个JavaScript方法,可以对控制器方法进行AJAX调用。 此控制器方法是一个JsonResult方法,它将字典对象返回给我的JavaScript。但是我对这个对象所做的任何事情(比如dictionaryObject.count、dictionaryObejct[I].value等)都会给我带来“未定义的”。你知道我该怎么用这个东西吗C# 如何遍历从JsonResult方法返回的字典?,c#,javascript,asp.net-mvc-4,C#,Javascript,Asp.net Mvc 4,我有一个JavaScript方法,可以对控制器方法进行AJAX调用。 此控制器方法是一个JsonResult方法,它将字典对象返回给我的JavaScript。但是我对这个对象所做的任何事情(比如dictionaryObject.count、dictionaryObejct[I].value等)都会给我带来“未定义的”。你知道我该怎么用这个东西吗 function MakeControllerMethodCallFunction(stringParam1, stringParam2) {
function MakeControllerMethodCallFunction(stringParam1, stringParam2) {
// Remove all rows from table so that table can have latest data
$('#TableModal tr').each(function (i, row) {
var $row = $(row);
$row.remove();
});
$("#TableModal thead").append("<tr><th>" + stringParam1+ " Details " + "</th></tr>");
//Resolving the server side method URL
var websitePath = GetRootWebSitePath();
var getUrl = websitePath + "/Home/GetDetails";
//Creating parameters for Ajax call
var params = "{\"ParamOne\" : \"" + stringParam1+ "\" , \"ParamTwo\" : \"" + stringParam2+ "\" }";
//AJAX Call
$.ajax({
url: getUrl,
type: 'POST',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: params,
success: MakeControllerMethodCallFunction_Success,
error: function (xhr, status, thrownError) {
alert("Get Details error");
}
});
}
//On Success of MakeControllerMethodCallFunction() this will be hit and values will be bind to the table
function MakeControllerMethodCallFunction_Success(dictionaryObject) {
var Size = 0;
if (dictionaryObject!= null) {
Size = (dictionaryObject!= null) ? dictionaryObject.count : 0;
}
if (Size != null) {
for (var i = 0; i < Size; i++) {
var newRow = "<tr>";
if (dictionaryObject!= null && dictionaryObject.count> 0 && dictionaryObject[i] != null) {
newRow += "<td>" + dictionaryObject[i].name + "</td>" + "<td>" + dictionaryObject[i].value + "</td>";
}
else {
newRow += "<td></td>";
}
newRow += "</tr>";
$("#TableModal tbody").append(newRow);
}
}
}
函数MakeControllerMethodCallFunction(stringParam1、stringParam2){
//从表中删除所有行,以便表可以包含最新数据
$('#TableModal tr')。每个(函数(i,行){
var$行=$(行);
$row.remove();
});
$(“#TableModal thead”).append(“+stringParam1+”详细信息“+”);
//解析服务器端方法URL
var websitePath=GetRootWebSitePath();
var getUrl=websitePath+“/Home/GetDetails”;
//为Ajax调用创建参数
var params=“{\“ParamOne\”:\”+stringParam1+“\”,\“paramtow2\”:\”+stringParam2+“\”}”;
//AJAX调用
$.ajax({
url:getUrl,
键入:“POST”,
数据类型:“json”,
contentType:'application/json;charset=utf-8',
数据:params,
成功:使ControllerMethodCallFunction\u成功,
错误:函数(xhr、状态、thrownError){
警报(“获取详细信息错误”);
}
});
}
//MakeControllerMethodCallFunction()成功后,将命中该函数并将值绑定到表
函数MakeControllerMethodCallFunction_成功(dictionaryObject){
变量大小=0;
如果(dictionaryObject!=null){
大小=(dictionaryObject!=null)?dictionaryObject.count:0;
}
如果(大小!=null){
对于(变量i=0;i0&&dictionaryObject[i]!=null){
newRow+=“”+dictionaryObject[i]。名称+“”+“”+dictionaryObject[i]。值+“”;
}
否则{
newRow+=“”;
}
newRow+=“”;
$(“#TableModal tbody”).append(newRow);
}
}
}
假设您已从控制器操作返回了一个字典
:
public ActionResult GetDetails()
{
var result = new Dictionary<string, string>
{
{ "key1", "value1" },
{ "key2", "value2" },
{ "key3", "value3" },
};
return Json(result, JsonRequestBehavior.AllowGet);
}
如您所见,这并不表示javascript,因此没有计数、大小或长度。这只是一个具有属性的普通javascript对象
下面是如何使用AJAX成功回调中的值:
function MakeControllerMethodCallFunction_Success(dictionaryObject) {
for (var key in dictionaryObject) {
if (dictionaryObject.hasOwnProperty(key)) {
var value = dictionaryObject[key];
alert(key + " -> " + value);
}
}
}
假设您返回了一个
Dictionary
,您显然可以在javascript中的value变量上访问此模型的属性:value.SomeProperty
在Chrome中点击F12(每个人都使用Chrome对吗?),您将发现大量工具可以帮助您进行JS开发。点击断点并检查数据的形状,在控制台试用和错误样式中计算表达式。泰:)这是一个词汇,但我认为这和字符串,字符串类型没有什么不同。让我试试这个。
function MakeControllerMethodCallFunction_Success(dictionaryObject) {
for (var key in dictionaryObject) {
if (dictionaryObject.hasOwnProperty(key)) {
var value = dictionaryObject[key];
alert(key + " -> " + value);
}
}
}