2017-08-05 28 views
0

我有我的控制器中的多个操作方法相同的以下代码。是否有可能将其减少为单一方法并将多个动作传递给它?从MVC控制器中的多个操作运行单个方法

[HttpGet] 
public ActionResult Tool2(Guid? id) 
{ 
    var model = _viewModelFactory.CreateViewModel<Guid?, ToolsViewModel>(id); 

    return model.ReferenceFound ? View(model) : View("~/Views/Tools/InvalidReference.cshtml", model); 
} 

[HttpGet] 
public ActionResult Tool1(Guid? id) 
{ 
    var model = _viewModelFactory.CreateViewModel<Guid?, ToolsViewModel>(id); 

    return model.ReferenceFound ? View(model) : View("~/Views/Tools/InvalidReference.cshtml", model); 
} 

每个动作确实有一个独特的视图,这需要保留。

回答

2

制定一个通用的方法,这两个动作都会调用。将两个操作分开,因为它会更清楚地理解,而不是编写(并阅读!)自定义路由。

public ActionResult Tool1(Guid? guid) 
{ 
    return CommonAction(guid, "Tool1"); 
} 

public ActionResult Tool2(Guid? guid) 
{ 
    return CommonAction(guid, "Tool2"); 
} 

private ActionResult CommonAction(Guid? guid, string viewName) 
{ 
    var model = _viewModelFactory.CreateViewModel<Guid?, ToolsViewModel>(id); 
    return model.ReferenceFound ? 
     View(model) : View("~/Views/Tools/InvalidReference.cshtml", model); 
} 
+0

我已经这样做了,但真的只是想要单一的方法,而不是2调用另一个。 – ChrisBint

相关问题