コントローラのアクションをより柔軟にしたいと考えています。例えば、Ajaxの場合、Ajaxリクエストをチェックし、ASP.NET MVCでJsonの結果を返す良い方法
...
return View("someView");
のか:私は、一般的なアクションは通常返すことを意味
...
return Json(new {result="ok"});
は、私が欲しいのは、私のアクションより「多目的」を作ることです。たとえば、単純な非Ajax要求に基づいてUIレイヤーを作成した後、ユーザーフレンドリーにし、Ajaxを追加することにしました。そうすれば、私はJsonを返すためのアクションを少し修正する必要があります。
(そしておそらく最悪の)そのようなことを回避する方法は、すべての(またはほとんどすべて)に次のコードを記述することで、ほとんどの最も簡単な解決方法:
if (Request.IsAjaxRequest) {
return Json(new {result="ok"});
}
else {
return View("someView")
}
しかし、もちろん、このような方法のDRYの原則と完全に競合。
だから私は「multipurposing」ことを達成するための良い方法を見つけたいです。 「
return CheckForAjax(View(...));
または
return CheckForAjax(View(...), Json(new {myCustomJson="hi"});
しかし、私はドン:
public ActionResult CheckForAjax(ActionResult result)
{
return ActionResult(result, Json(new {result="ok"}));
}
public ActionResult CheckForAjax(ActionResult result, Json json)
{
if (Request.IsAjaxRequest) {
return json;
}
else {
return result;
}
}
このような方法は、私はアクションでヘルパーを呼び出すことができます。
一つの方法は、そのようないくつかのヘルパーメソッドを書くことですそれが良い方法か、いくつかの自転車を改革するかどうかは分かりません:) アクションフィーうんざりする?しかし、私はそのフィルタにカスタムJSONを渡す方法がわからない...
は正直に言うとどんな提案を
オリジナルのソリューションは、**明示的な**の方が優れています。 – Ryan