MVC的一個優點是可以在普通Web調用以及Ajax調用中使用Actions。但是這樣做對我的代碼有點不舒服。我想知道別人的想法。如何在ASP.Net中處理對控制器的Ajax調用MVC
所以我想查看列表中項目的詳細信息。我創建了一個Details視圖。我也決定使用hijaxing - 如果用戶啓用了Javascript,我希望Details窗體是一個彈出窗口。所以對於Details.aspx,我需要完整的html,但如果它是ajax請求,我只需要表單元素。因此,這裏是我怎麼寫我控制器的方法:
public ActionResult Details(int id)
{
if (Request.IsAjaxRequest())
{
return PartialView(GetAjaxModel());
}
else
return View(GetModel());
}
它的工作原理,但每當我有一個巨大的「if」語句是圍繞我的整個代碼,它困擾着我。我怎樣才能擺脫這個問題和/或讓代碼更好?
我也可以寫稱爲AjaxDetails一個單獨的方法,但我真的很想寫的是:
public ActionResult Details(int id)
{
return View(GetModel());
}
[Ajax]
public ActionResult Details(int id)
{
return View(GetAjaxModel());
}
但是據我所知,沒有屬性篩選阿賈克斯VS正常通話。
如何編寫Ajax調用?
UPDATE Clicktricity的確的確有正確的答案。一個額外的變化,不過是,自2控制器方法不能有相同的簽名,我需要寫控制器代碼這樣:
public ActionResult Details(int id)
{
return View(GetModel());
}
[AjaxRequest]
[ActionName("Details")]
public ActionResult DetailsAjax(int id)
{
return PartialView(GetAjaxModel());
}
有趣的一點 – Clicktricity 2010-09-13 19:45:20