2009-04-14 165 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