Подтвердить что ты не робот

Возврат объекта JSON со страницы ASP.NET

В моей конкретной ситуации у меня есть несколько решений для моей проблемы. Я хочу узнать, какой из них более осуществим. В этом случае я также могу достичь своей цели, возвращая объект JSON из моего кода на стороне сервера; однако я не знаю, как это делается и каков наилучший способ сделать это.

Во-первых, мне не нужна полная страница aspx, так как мне нужен только ответ, возвращенный из кода. Итак, я использую веб-службы, обработчик или есть ли какой-либо другой способ сделать это?

Возможно ли это решение? Я строю строку JSON с помощью класса StringBuilder и вставляю эту строку на целевую страницу aspx? Есть ли какие-либо меры предосторожности или вещи, о которых я должен знать?

Я ценю ваши идеи.

Привет,

Кемаль

------------ UPDATE! ------------

Предположим, у меня есть объект JSON на моей странице userlist.aspx, который затем я использую с jQuery...

{"menu": {
  "id": "color1",
  "value": "color",
  "popup": {
    "menuitem": [
      {"value": "Red"},
      {"value": "Green"},
      {"value": "Yellow"}
    ]
  }
}} // example taken from the json.org/example page

Теперь, когда я хочу добавить новые пункты меню с моей страницы aspx, что мне делать... Я так думаю, что мой вопрос более конкретный...

Предположим, что я создаю новую строку в моем aspx-коде, как таковой "{"value": "Blue"}. Как это сделать в уже существующем списке элементов на целевой странице? Или это не правильный подход к подобной ситуации? Если нет, то как еще это можно достичь?

Кроме того, если я хотел запустить событие jQuery, когда новый элемент добавлен в этот список, как это достигается?

------------ ОБНОВЛЕНИЕ 2 26 августа 2015 г. ------------

К тому моменту, когда я задал этот вопрос, способ, которым я подходил к проблеме, был в другом аспекте. Теперь я более компетентен в этом вопросе и могу с радостью принять самый проголосовавший ответ, так как подход к этому вопросу явно не должен включать уже существующий JSON и выводить новый код из кода, который также предлагает @DavGarcia.

4b9b3361

Ответ 1

В вашей Page_Load вы хотите очистить нормальный выход и написать свой собственный, например:

string json = "{\"name\":\"Joe\"}";
Response.Clear();
Response.ContentType = "application/json; charset=utf-8";
Response.Write(json);
Response.End();

Чтобы преобразовать объект С# в JSON, вы можете использовать библиотеку, такую ​​как Json.NET.

Вместо того, чтобы ваша страница .aspx выводила JSON, рассмотрите возможность использования веб-службы (asmx) или WCF, оба из которых могут выводить JSON.

Ответ 3

нет проблем с этим с asp.... это наиболее естественно сделать с MVC, но может быть сделано и со стандартным asp.

В MVC-фреймворке есть всевозможные вспомогательные классы для JSON, если можно, я предлагаю рассказать о некоторых MVC-love, если нет, вы, вероятно, можете просто просто получить вспомогательные классы JSON, используемые MVC и использовать их в контексте asp.net.

изменить:

вот пример того, как вернуть данные JSON с помощью MVC. Это будет в вашем классе контроллера. Это вне коробки с MVC - когда вы создаете новый проект MVC, этот материал автоматически создается, поэтому ничего особенного. Единственное, что я делаю, возвращает actionResult, который является JSON. Метод JSON, который я вызываю, - это метод класса Controller. Это все очень простой материал по умолчанию MVC:

public ActionResult GetData()
{
    data = new { Name="kevin", Age=40 };
    return Json(data, JsonRequestBehavior.AllowGet);
}

Эти возвращаемые данные могут быть вызваны через JQuery как вызов ajax:

$.get("/Reader/GetData/", function(data) { someJavacriptMethodOnData(data); });

Ответ 4

С веб-страницами ASP.NET вы можете сделать это на одной странице в качестве базового примера GET (самое простое, что может работать.

var json = Json.Encode(new {
    orientation = Cache["orientation"],
    alerted = Cache["alerted"] as bool?,
    since = Cache["since"] as DateTime?
});
Response.Write(json);

Ответ 5

Если вы получаете код позади, используйте несколько таких

        MyCustomObject myObject = new MyCustomObject();
        myObject.name='try';
        //OBJECT -> JSON
        var javaScriptSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
        string myObjectJson = javaScriptSerializer.Serialize(myObject);
        //return JSON   
        Response.Clear();     
        Response.ContentType = "application/json; charset=utf-8";
        Response.Write(myObjectJson );
        Response.End();

Итак, вы возвращаете объект json, сериализованный всеми атрибутами MyCustomObject.