2009-04-14 63 views
1

如果用户没有使用javascript,我将在IsAjaxRequest检查后使用RedirectToAction刷新视图。这有效当我在页面中有一个用户控件并返回部分视图。asp mvc Ajax.BeginForm返回视图或值,在返回类型上感到困惑

BUt当我只想返回一个值,比如int,并且当还没有ajax请求时仍然想使用RedirectToAction时,我该如何在控制器中设置方法?

公众的ActionResult ...

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

不工作。

回答

2

您需要使用JsonResult。

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

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

1

您需要重定向到使用适当的路径数据(也许使用TempData)呈现父视图以获取更新信息到局部视图的操作。

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

是的,但问题是与第一部分,返回视图与有问题的字段的int值不起作用。 – zsharp 2009-04-14 01:23:18

+0

抱歉 - 错过了你的观点。如果您只想返回一个int,则将其作为ContentResult传回。 – tvanfosson 2009-04-14 01:36:21