gpt4 book ai didi

javascript - 您可以使用 asp.net mvc Json() 将 C# 字典转换为 Javascript 关联数组吗

转载 作者:可可西里 更新时间:2023-11-01 01:51:32 24 4
gpt4 key购买 nike

我最近asked this question ,但经过一些回应和一些研究后,我想改变我实际询问的内容。

我看到了number of blog posts about sending associative arrays from javascript to C# Controller Action ,但我想要相反的东西。我想将 json 作为字典返回给客户端(根据我的研究,字典的 javascript 等价物是一个关联数组)。

当我使用 c sharp 中的常规字典并在其上调用 Json() 并尝试将其返回到 javascript 时,它就崩溃了,我什至无法在 javascript 端设置断点。例如:

C#代码:

  Dictionary<string, List<CalendarEvent>> dict = events.GroupBy(r => r.Date.ToString("MMM dd, yyyy")).ToDictionary(group => group.Key, group => group.ToList());

return Json(new
{
Dict = dict
}
});

Javascript 代码:

    $.post('/MyController/Refresh', function (data) {

var calendarDictionary = data.Dict;

}, "json");

最佳答案

您可能对它只是爆炸部分更具体一些,但这里有一个对我来说效果很好的例子:

型号:

public class CalendarEvent
{
public string Name { get; set; }
public DateTime Date { get; set; }
public int Id { get; set; }
}

Controller :

public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}

[HttpPost]
public ActionResult Refresh()
{
var model = new[]
{
new CalendarEvent
{
Id = 1,
Name = "event 1",
Date = DateTime.Now
},
new CalendarEvent
{
Id = 2,
Name = "event 2",
Date = DateTime.Now
},
new CalendarEvent
{
Id = 3,
Name = "event 3",
Date = DateTime.Now.AddDays(2)
},
}
.ToList()
.ConvertAll(a => new
{
a.Name,
a.Id,
Date = a.Date.ToString("MMM dd, yyyy"),
})
.GroupBy(r => r.Date)
.ToDictionary(
group => group.Key,
group => group.Select(x => new { x.Name, x.Id })
);
return Json(new { Dict = model });
}
}

查看:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>    
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JSON Test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
$.post('/home/refresh', function(data) {
// TODO : manipulate the data.Dict here
}, 'json');
});
</script>
</head>
<body>

</body>
</html>

返回的 JSON:

{ "Dict": { "Sep 05, 2010": [ { "Name": "event 1", "Id": 1 },
{ "Name": "event 2", "Id": 2 } ],
"Sep 07, 2010": [ { "Name": "event 3", "Id": 3 } ] } }

关于javascript - 您可以使用 asp.net mvc Json() 将 C# 字典转换为 Javascript 关联数组吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3645939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com