2017-08-05 61 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

相關問題