2009-04-14 6 views
1

ユーザーがjavascriptを使用していない場合、IsAjaxRequestチェック後にRedirectToActionでビューを更新します。これは、ページにユーザーcontrlがあり、部分ビューを返すときに機能します。asp mvc Ajax.BeginForm戻り値戻り値の型で混乱したビューまたは値

ちょうど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結果にシリアル化します。または、本当にAJAXではない "int"を返すだけの場合は、ContentResultを使用してください。

+0

一般的なAJAXはどういう意味ですか? – zsharp

+0

一般的なAJAXは、JSONまたはXMLとして返されます。しかし、あなたの応答に「5」などのintを返すだけなら(メモ帳を開き、「5」と入力して保存することができます)、AJAXの応答で特別な処理が必要になります。 JSONは "{value:5}"のようになります –

1

更新された情報を部分ビューに表示するには、適切なルートデータを使用して親ビューをレンダリングするアクションにリダイレクトする必要があります(おそらくTempDataを使用します)。

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

はい、問題は最初の部分で問題のフィールドのint値を持つビューに戻りません。 – zsharp

+0

申し訳ありません - あなたの意見を逃した。 intを返すだけの場合は、ContentResultとして渡します。 – tvanfosson