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