私は、それがAJAX呼び出しであるか子アクションであるかを普遍的に決定するある種のクラスを構築しようとしてGoogleを燃やしました。コントローラーが部分ビューまたは完全ビューのどちらを返すかを判断できるようにします。これまでのところ、私はあまり運がありませんでした。現時点では、これを実現するために次のコードを使用しています。
if (Request.IsAjaxRequest() || ControllerContext.IsChildAction)
{
return PartialView();
}
return View();
問題は、コントローラーのすべてのアクションと遭遇するすべての条件でこれを行う必要があることですが、ヘルパーを介してこれを達成する方法があると確信していますが、方法がわかりません。これを実現するためのリンク/サンプルコードを教えてください。
編集:
@Aronコントローラー全体が長すぎるため、コードを投稿しました。しかし、あなたは私の苦境を見ることができます。戻り値には、View と Object/Model "k" が含まれます。
public ActionResult _Details_Message(int id = 0, int CId = 0)
{
ViewBag.MrnSortParm = CId;
if (id != 0)
{
var k = mrn.MRNS.Where(u => u.Id == id).SingleOrDefault();
if (k.To == User.Identity.Name)
{
if (k.Type == 0) // message
{
k.Read = true;
mrn.Entry(k).State = EntityState.Modified;
mrn.SaveChanges();
}
return PartialView("_Details_Message", k);//replace the above code here
}
if (k.From == User.Identity.Name)
{
return PartialView("_Sent", k); //replace the above code here
}
}
var m = new message();
m.CourierId = CId;
return PartialView("_Create_Message", m); //replace the above code here
}
編集2 ヘルパー関数ではなく、ビューの変更であるという答えが見つかりました。リンクはこちら. 自分の質問を重複としてマークできます:(