asp mvc Ajax.BeginForm返回视图或值,对返回类型感到困惑

时间:2009-04-14 01:06:20

标签: asp.net-mvc asp.net-ajax

如果用户没有使用javascript,我将在IsAjaxRequest检查后使用RedirectToAction刷新视图。这在我在页面中有用户控制并返回局部视图时有效。

BUt当我只想返回一个值,比如说int,并且还希望在不是ajax请求时使用RedirectToAction,如何在控制器中设置方法?

public ActionResult ...

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

不能正常工作。

2 个答案:

答案 0 :(得分:2)

您需要使用JsonResult。

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

它会将匿名对象序列化为JSON结果。或者如果你真的想要返回一个“int”,这不是真正常见的AJAX,你应该使用ContentResult

答案 1 :(得分:1)

您需要重定向到使用适当的路径数据(并且可能使用TempData)呈现父视图的操作,以将更新的信息提供给局部视图。

     if (IsAjaxRequest())
     {
         return Content( "5" );
     }
     else
     {
         return RedirectToAction( "parentAction", new { id = ??, value = 5 } );
     }