在mvc模型中几乎具有相同功能或参数的2个表单和2个后处理动作

问题描述:

2个表单和2个控制器动作具有几乎相同的代码或者在模型中创建新属性以确定控制器中应发生什么更好?在mvc模型中几乎具有相同功能或参数的2个表单和2个后处理动作

public ActionResult SubmitFactors(EntityRelationshipsIndexModel m) 
    { 
     Method1(); 
     Method2(); 
     if (m.Factor.Equals("X")) 
     { 
      m.Yfactor = null; 
     } 
     else 
     { 
      m.XFactor = null; 
     } 

     Method3(); 
    } 

OR

public ActionResult SubmitXFactor(EntityRelationshipsIndexModel m) 
    { 
     Method1(); 
     Method2(); 
     model.Y = null; 
     Method3(); 
    } 

    public ActionResult SubmitYFactor(EntityRelationshipsIndexModel m) 
    { 
     Method1(); 
     Method2(); 
     model.X = null; 
     Method3(); 
    } 

我认为更好的选择是使用一种方法(DRY原则)。但要记住封装这个逻辑:

if (m.Factor.Equals("X")) 
{ 
    m.Yfactor = null; 
} 
else 
{ 
    m.XFactor = null; 
} 

单独的类。我想这个逻辑可能会在未来增加(?)。

这只是沉思,因为一切都取决于您的项目艺术结构和要求。

更新

你也应该考虑实现模板方法模式,如果你有代码看起来像这样:

Method1(); 
Method2(); 
anyClass.FunctionCall(m); 
Method3();