ASP.NET MVC: как преобразовать ActionResult в строку? - PullRequest
8 голосов
/ 03 января 2011

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

Для этого мне нужно визуализировать ActionResult в строку.Как мне это сделать?

У нас есть обратное, где мы можем преобразовать строку в ActionResult с помощью this.Content ().

Обновление

Существующий и 1-й метод действия возвращает тип ActionResult, но он действительно возвращает ViewResult для ответа на HTTP-запрос на публикацию.У меня есть 2-й метод действия (мой фасад), который возвращает JsonResult, который отвечает на запросы AJAX.Я хочу, чтобы этот метод второго действия использовал метод первого действия для рендеринга HTML.

В общей схеме я хочу, чтобы ActionResult (сгенерированный из метода действия) мог быть получен не только с помощью стандартного сообщения HTTP, но также с помощью запроса AJAX с помощью метода действия фасада (метод 2-го действия),Таким образом, я, как разработчик, могу выбрать использование HTTP Post или AJAX для получения визуализации страницы.

Извините, я пытался сделать это обновление как можно более коротким.Спасибо.

Ответы [ 3 ]

6 голосов
/ 03 января 2011

Вы ищете номер 4 или 6 ниже?

Текст извлечен из здесь :

Понимание результатов действий

Действие контроллера возвращает то, что называется результатом действия. Результатом действия является то, что возвращает действие контроллера в ответ на запрос браузера.

Платформа ASP.NET MVC поддерживает несколько типов результатов действий, включая:

  1. ViewResult - представляет HTML и разметку.
  2. EmptyResult - не представляет результата.
  3. RedirectResult - представляет перенаправление на новый URL.
  4. JsonResult - представляет результат нотации объекта JavaScript, который можно использовать в приложении AJAX.
  5. JavaScriptResult - представляет скрипт JavaScript.
  6. ContentResult - представляет текстовый результат.
  7. FileContentResult - представляет загружаемый файл (с двоичным содержимым).
  8. FilePathResult - представляет загружаемый файл (с путем).
  9. FileStreamResult - представляет загружаемый файл (с потоком файлов).

Все эти результаты действий наследуются от базового класса ActionResult.

1 голос
/ 03 января 2011

Вы уверены, что JsonResult не то, что вы хотите? Если вы вызываете метод Json(object jsonObject), определенный в Controller, он сериализует jsonObject в JSON и возвращает соответствующий ответ (со всеми правильно заданными заголовками и всем этим). Обычно JSON-запросы должны быть POST, но вы также можете настроить их для разрешения GET.

1 голос
/ 03 января 2011

Вернуть его как ContentResult, а не ActionResult

Я использую что-то вроде

    public ContentResult Place(string person, string seat)
    {
        string jsonString = null;
        try
        {

            jsonString = AllocationLogic.PerformAllocation(person, seat);
        }
        catch {
            jsonString = AllocationLogic.RaiseError(timeout);
        }
        return Content(jsonString);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...