ASP.NET MVC: как преобразовать ActionResult в строку?
Я хотел бы взять существующий метод действия, отобразить его возвращаемое значение в строку и отправить его в виде JSON для ответа на запрос AJAX.
Для этого мне нужно визуализировать ActionResult в строку. Как мне это сделать?
У нас есть противоположность, где мы можем преобразовать строку в ActionResult с помощью this.Content().
Обновить
Существующий и 1-й метод действия возвращает тип ActionResult, но он действительно возвращает ViewResult для ответа на HTTP-запрос на публикацию. У меня есть 2-й метод действия (мой фасад), который возвращает JsonResult, который отвечает на запросы AJAX. Я хочу, чтобы этот метод второго действия использовал метод первого действия для рендеринга HTML.
В общей схеме я хочу, чтобы ActionResult (генерируемый из метода действия) мог быть получен не только с помощью стандартного сообщения HTTP, но также с помощью запроса AJAX с помощью метода действия фасада (2-й метод действия). Таким образом, я, как разработчик, могу выбрать использование HTTP Post или AJAX для получения рендеринга страницы.
Извините, я пытался сделать это обновление как можно короче. Благодарю.
3 ответа
Вы ищете номер 4 или 6 ниже?
Текст извлечен отсюда:
Понимание результатов действий
Действие контроллера возвращает то, что называется результатом действия. Результатом действия является то, что возвращает действие контроллера в ответ на запрос браузера.
Платформа ASP.NET MVC поддерживает несколько типов результатов действий, включая:
- ViewResult - представляет HTML и разметку.
- EmptyResult - не представляет результата.
- RedirectResult - представляет перенаправление на новый URL.
- JsonResult - представляет результат нотации объекта JavaScript, который можно использовать в приложении AJAX.
- JavaScriptResult - представляет скрипт JavaScript.
- ContentResult - представляет текстовый результат.
- FileContentResult - представляет загружаемый файл (с двоичным содержимым).
- FilePathResult - представляет загружаемый файл (с путем).
- FileStreamResult - представляет загружаемый файл (с потоком файлов).
Все эти результаты действий наследуются от базового класса ActionResult.
Уверены ли вы JsonResult
не то, что вы хотите? Если вы позвоните Json(object jsonObject)
метод, который определен в Controller
Сериализует jsonObject
в JSON и вернуть соответствующий ответ (со всеми правильно заданными заголовками и всем этим). Обычно JSON-запросы должны быть POST, но вы также можете настроить их, чтобы разрешить GET.
Верните его как 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);
}