加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 23:21:54 所属栏目:asp.Net 来源:网络整理
导读:我最近 asked this question,但经过一些回应和一些研究,我想改变我实际要求的. 我看到了一个number of blog posts about sending associative arrays from javascript to C#控制器的动作,但我想要相反.我想把json作为一个字典返回给客户端(从我的研究中,java
我最近 asked this question,但经过一些回应和一些研究,我想改变我实际要求的.

我看到了一个number of blog posts about sending associative arrays from javascript to C#控制器的动作,但我想要相反.我想把json作为一个字典返回给客户端(从我的研究中,javascript相当于dictionary是一个关联数组).

当我在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; }
}

控制器:

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",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 } ] } }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读