Javascript обработка данных на стороне сервера в ASP.NET - PullRequest
1 голос
/ 21 января 2012

У меня есть программа, которая получает список местоположений из базы данных sql через запрос linq-to-entity в ac # code-behind.Этот список необходимо проанализировать с помощью метода javascript (Google maps api v3), чтобы отобразить местоположения на карте.Мне нужно найти лучший способ получить информацию от запроса на стороне сервера для функции javascript для обработки.Есть мысли!?

Редактировать: ошибка при сериализации ...

JavaScriptSerializer jss = new JavaScriptSerializer();
            using (RamRideOpsEntities myEntities = new RamRideOpsEntities())
            {
                var validDates = (from a in myEntities.AdminOptions
                                  select new { a.ValidDate1, a.ValidDate2 }).First();

                var allWaitingRides = (from r in myEntities.Rides
                                       where ((r.TimeOfCall >= validDates.ValidDate1 ||
                                            r.TimeOfCall <= validDates.ValidDate2) && r.Status.Equals("Waiting", StringComparison.OrdinalIgnoreCase))
                                       orderby r.TimeOfCall descending
                                       select r).ToList();

                json_topTen.Value = jss.Serialize(allWaitingRides.GetRange(0, 10).ToArray());
            }

Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ArgumentException: Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.

Source Error: 


Line 106:                                       select r).ToList();
Line 107:
Line 108:                json_topTen.Value = jss.Serialize(allWaitingRides.GetRange(0, 10).ToArray());
Line 109:            }
Line 110:        }

Source File: D:\DOCUMENTS\RamRide\RamRideOps_PL\RamRideOps\RamRideOps\Ops\DispatchCar.aspx.cs    Line: 108 

Stack Trace: 


[ArgumentException: Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.]
   System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) +52
   System.Collections.Generic.List`1.GetRange(Int32 index, Int32 count) +70
   RamRideOps.DispatchCar.setTopTen() in D:\DOCUMENTS\RamRide\RamRideOps_PL\RamRideOps\RamRideOps\Ops\DispatchCar.aspx.cs:108
   RamRideOps.DispatchCar.Page_Load(Object sender, EventArgs e) in D:\DOCUMENTS\RamRide\RamRideOps_PL\RamRideOps\RamRideOps\Ops\DispatchCar.aspx.cs:41
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
   System.Web.UI.Control.OnLoad(EventArgs e) +91
   System.Web.UI.Control.LoadRecursive() +74
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272

Ответы [ 3 ]

3 голосов
/ 21 января 2012

Самый простой способ экспортировать данные из C #, возможно, не самый простой способ использовать данные в JavaScript, но я сделаю это с последней точки зрения.

Вероятно, лучший способ сделать это с точки зрения JavaScript - это экспортировать содержимое вашего запроса в представление JSON, возможно, используя JSONP для его передачи клиенту. Вы можете использовать стандарт XMLHttpRequest, чтобы ПОЛУЧИТЬ эти данные с вашего сервера, а затем проанализировать их на стороне клиента для использования в JS.

На сайте JSON.org есть список множества парсеров / сериализаторов JSON, доступных в C #.

3 голосов
/ 21 января 2012

Если вы используете asp.net mvc, вы можете вернуть JSON клиенту, используя вызов javascript / jquery. Вот подсказка о том, как это можно сделать от одного из крупных экспертов по MVC (Фил Хаак): Callng MVC от Javascript

Если вы используете стандартный asp.net, вы можете использовать веб-методы или страницы asmx для возврата данных JSON.

Сделайте вызов w / linq для объектов в любом из вышеперечисленных, затем преобразуйте в json и передайте его вниз ...

Похоже, вы используете стандартный asp.net (не mvc) - посмотрите этот урок:

ASP.NET Web Methods & jquery

2 голосов
/ 21 января 2012

Если ваши объекты достаточно легки, просто сериализуйте их в массив JSON и передайте их обратно клиенту. Если они не очень легкие, создайте несколько объектов передачи данных, чтобы выполнить работу.

Вот как может выглядеть ваш ajax-запрос (с использованием jQuery):

$.ajax({url: "url/to/handler.ashx",
    success: function(data, state) {
        //data represents the array of objects sent back from the server.
    }
});

Ваш обработчик будет вести себя так, как указано ниже:

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "application/x-javascript";
        //fetch data from database.
        //return data by writing the serialized objects directly to context.Response.OutputStream
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...