【问题标题】:Store the LINQ query result as JSON object and passing to javascript将 LINQ 查询结果存储为 JSON 对象并传递给 javascript
【发布时间】:2011-06-15 03:10:08
【问题描述】:

我有一个已添加到列表中的查询。现在我需要在 javascript 中使用它。它是在 ASP.NET 3.5 中完成的。所以,我需要将它作为 JSON 对象发送。这就是我所做的:(我不确定这是否是获取 JSON 对象的正确方法。如果我错了,请纠正我。

    List<NCDCPoint> dupli = (from n in CDC.NCDCPoints
                             where n.EVENT_TYPE_ID == et
                             where n.BeginDate == b
                             where n.EndDate == e
                             select n).ToList<NCDCPoint>();
  System.Web.Script.Serialization.JavaScriptSerializer oSerializer =
 new System.Web.Script.Serialization.JavaScriptSerializer();
   string sJSON = oSerializer.Serialize(dupli); 





} 

这就是我的 jquery 的样子

   $.ajax({
            type: "POST", url: "Data.aspx/CheckInsertRecord",
            data: "{EventType:'" + eventtype + "',BeginDate:'" + begindate + "'," +
                   "EndDate:'" + enddate+"' }",
            contentType: "application/json; charset=utf-8", dataType: "json",
            success: function (msg) {
            alert(msg.d);
            if(msg.d == "true")
        {
        Showduplicate();
        }
            }
        });

那么,请告诉我接下来我需要做什么?另一件事是我已经将 true 或 false 返回到 aspx 页面中的 $.ajax{} 。那么我应该如何发送 JSON 对象呢?

【问题讨论】:

  • -1,你的框架是什么?这段代码在哪里被调用?你在哪里已经返回真/假?你的 jQuery 调用是什么样的?服务器上的“动作”或 ajax 方法是什么样的?您需要提供更多信息。

标签: jquery asp.net ajax json


【解决方案1】:

如果您刚刚开始,那么最好从一开始就使用 ASP.NET MVC,它比传统的 ASP.NET Web 窗体要好得多。当您这样做时,您希望创建一个返回 JsonResult 的操作方法。这是一篇很好的文章,可以帮助您入门。

http://msmvps.com/blogs/shahed/archive/2009/08/23/asp-net-asp-net-mvc-tips-json-handler-aspx-template-asynchronous-jquery-treeview-with-ashx-generic-handler-and-many-more.aspx

【讨论】:

    【解决方案2】:

    更改您的方法以返回List&lt;NCDCPoint&gt; 并将返回类型声明为json:

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json]
    public static List<NCDCPoint> CheckInsertRecord(String EventType, String BeginDate, String EndDate)
    {
        NCDCPoint ncdc = new NCDCPoint();
        CEOSurveyDataContext CDC = new CEOSurveyDataContext();
        int et = Convert.ToInt32(EventType);
    
    
        DateTime b = Convert.ToDateTime(BeginDate);
       DateTime e = Convert.ToDateTime(EndDate);
    
            bool query = ( from n in CDC.NCDCPoints
                          where n.EVENT_TYPE_ID == et
                          where n.BeginDate == b
                          where n.EndDate == e
                          select n).Count()>0;
    
        return = (from n in CDC.NCDCPoints
                                 where n.EVENT_TYPE_ID == et
                                 where n.BeginDate == b
                                 where n.EndDate == e
                                 select n).ToList<NCDCPoint>();
    } 
    

    【讨论】:

    • 嘿,我可以同时发送“真假”和 JSON 对象吗...否则我需要为此声明一个单独的方法
    • 嘿..当我尝试使用警报时(msg.d)..我什么也没得到...实际上它甚至没有显示警报。
    【解决方案3】:

    您可以使用JavascriptSerializer 对对象进行序列化并发送。

    var dupli= from n in CDC.NCDCPoints
                             where n.EVENT_TYPE_ID == et
                             where n.BeginDate == b
                             where n.EndDate == e
                             select n;
    
    return new JavaScriptSerializer().Serialize(dupli);
    

    在jquery ajax的succes回调中。

    ...
    success:function(msg){
    var data = $.parseJSON(msg.d);
    //And you get your object
    }
    

    【讨论】:

    • 在序列化“aspnet_User”类型的对象时检测到循环引用。这是我更新代码时遇到的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 2021-04-05
    • 1970-01-01
    • 2020-03-26
    相关资源
    最近更新 更多