如果用户没有使用javascript,我将在IsAjaxRequest检查后使用RedirectToAction刷新视图。这在我在页面中有用户控制并返回局部视图时有效。
BUt当我只想返回一个值,比如说int,并且还希望在不是ajax请求时使用RedirectToAction,如何在控制器中设置方法?
public ActionResult ...
(if ajax request) Return View (new{value=5})?
(if not) redirecttoAction ("view");
不能正常工作。
答案 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 } );
}