如果我们在单个控制器操作中处理正常的(完整的)回发和AJAX回发,则该方法很可能非常庞大。大量处理返回的if..else
语句(返回常规视图、部分视图和JSON成功字符串)、对ModelState
错误的不同处理等等。
但是,将其分为两个操作,例如Create
和CreateAjax
,意味着必须维护类似代码的两个实例。
您有什么建议可以使操作简单,同时又能涵盖两种回发场景?
发布于 2012-01-03 02:25:54
我将有两个方法,Create和CreateAjax,并考虑重构代码,以便将任何重复的代码放入助手类或服务中。
发布于 2012-01-03 02:27:03
我建议将负责ajax部分的所有代码放到一个看起来干净的单独ActionResult
中。
发布于 2012-01-03 02:29:54
有许多选项,您可以通过一个操作来处理它,如下所示:
public ActionResult DoSomething(...)
{
if (Request.IsAjaxRequest())
return DoSomethingAjax(..);
else
return DoSomethingStandard(..);
}
private ActionResult DoSomethingAjax(..) { }
private ActionResult DoSomethingStandard(..) { }
您可以创建一些工厂组件来完成这项工作,并从这两个方法调用:
public ActionResult DoSomething()
{
return DoSomethingFactory.Do();
}
public ActionResult DoSomethingAjax()
{
return DoSomethingFactory.Do();
}
您可以使用分部类来拆分回发操作处理程序和AJAX处理程序。
一些想法。
https://stackoverflow.com/questions/8704018
复制相似问题