Действия контроллера ASP.NET MVC, которые возвращают JSON или частичный HTML

Это то, что публичный API не предоставляет, но может быть полезен для многих людей. Ваш основной ресурс заключается в файле об ошибке с Apple , который описывает то, что вам нужно (и это может быть полезно, чтобы объяснить, зачем вам это нужно). Надеюсь, ваш запрос может быть выпущен в будущем выпуске.

После подачи ошибки вы также можете использовать один из инцидентов технической поддержки разработчиков (DTS), которые появились с вашим членством в Программе разработчиков iPhone. Если есть общедоступный способ сделать это, инженер Apple будет знать. В противном случае это может по крайней мере помочь получить ваше положение немного больше внимания в Mothership. Удачи!

391
задан tereško 18 June 2012 в 17:20
поделиться

5 ответов

В Вашем методе действия возвратите Json (объект) возвратить JSON Вашей странице.

public ActionResult SomeActionMethod() {
  return Json(new {foo="bar", baz="Blech"});
}

Тогда просто называют метод действия с помощью Ajax. Вы могли использовать один из вспомогательных методов от ViewPage такой как

<%= Ajax.ActionLink("SomeActionMethod", new AjaxOptions {OnSuccess="somemethod"}) %>

, SomeMethod будет методом JavaScript, который тогда оценивает возвращенный объект Json.

, Если Вы хотите возвратить простую строку, можно просто использовать ContentResult:

public ActionResult SomeActionMethod() {
    return Content("hello world!");
}

ContentResult значением по умолчанию возвращает текст/плоскость как свой contentType.
Это сверхзагружаемо, таким образом, можно также сделать:

return Content("<xml>This is poorly formatted xml.</xml>", "text/xml");
501
ответ дан Eduardo Molteni 18 June 2012 в 17:20
поделиться

Другой хороший способ иметь дело с данными JSON использует функцию JQuery getJSON. Можно звонить

public ActionResult SomeActionMethod(int id) 
{ 
    return Json(new {foo="bar", baz="Blech"});
}

Метод из метода jquery getJSON просто...

$.getJSON("../SomeActionMethod", { id: someId },
    function(data) {
        alert(data.foo);
        alert(data.baz);
    }
);
75
ответ дан radbyx 18 June 2012 в 17:20
поделиться

Для ответа на другую половину вопроса можно звонить:

return PartialView("viewname");

, когда Вы хотите возвратить частичный HTML. Необходимо будет просто найти некоторый способ решить, хочет ли запрос JSON или HTML, возможно, на основе части/параметра URL.

13
ответ дан Brad Wilson 18 June 2012 в 17:20
поделиться

Я думаю, вам следует рассмотреть AcceptTypes запроса. Я использую его в своем текущем проекте, чтобы вернуть правильный тип контента, как показано ниже.

Ваше действие на контроллере может проверить его, как на объекте запроса

if (Request.AcceptTypes.Contains("text/html")) {
   return View();
}
else if (Request.AcceptTypes.Contains("application/json"))
{
   return Json( new { id=1, value="new" } );
}
else if (Request.AcceptTypes.Contains("application/xml") || 
         Request.AcceptTypes.Contains("text/xml"))
{
   //
}

Затем вы можете реализовать aspx представления для обслуживания частичного Пример ответа xhtml.

Затем в jQuery вы можете получить его, передав параметр типа как json:

$.get(url, null, function(data, textStatus) {
        console.log('got %o with status %s', data, textStatus);
        }, "json"); // or xml, html, script, json, jsonp or text

Надеюсь, это поможет Джеймс

111
ответ дан 22 November 2019 в 23:45
поделиться

Вы можете взглянуть на эту очень полезную статью, которая охватывает это очень хорошо!

Просто думал, что это может помочь людям искать хорошее решение этой проблемы.

http://weblogs.ass.asp.net/rashid/archive/2009/04/15/Adaptive-rendering-in-asp-net-mvc.aspx

6
ответ дан 22 November 2019 в 23:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: