asp mvc Ajax.BeginForm возвращаемое представление или значение, перепутанные с типами возвращаемых данных - PullRequest
1 голос
/ 14 апреля 2009

Если пользователь не использует javascript, я обновлю представление с помощью RedirectToAction после проверки IsAjaxRequest. Это работает, когда у меня есть пользовательский контроль на странице и возвращаем частичное представление.

Но когда я просто хочу вернуть значение, скажем, int, а также все еще хочу использовать RedirectToAction, когда не ajax-запрос, как мне настроить метод в контроллере?

public ActionResult ...

(if ajax request) Return View (new{value=5})? 
(if not) redirecttoAction ("view");

не работает.

Ответы [ 2 ]

2 голосов
/ 14 апреля 2009

Вам необходимо использовать JsonResult.

if (IsAjaxRequest()) {
    return Json(new { value = 5 });
} else {
    return RedirectToAction("parentAction");
}

Он будет сериализовать анонимный объект в результат JSON. Или, если вы действительно хотите просто вернуть "int", что на самом деле не является обычным AJAX, вы должны использовать ContentResult.

1 голос
/ 14 апреля 2009

Вам потребуется перенаправить на действие, которое отображает родительское представление с соответствующими данными маршрута (и, возможно, с использованием TempData), чтобы получить обновленную информацию в частичном представлении.

     if (IsAjaxRequest())
     {
         return Content( "5" );
     }
     else
     {
         return RedirectToAction( "parentAction", new { id = ??, value = 5 } );
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...