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

私はすでにこれを行っていましたが、実際には別のメソッドを呼び出すのではなく、単一のメソッドを必要としていました。 – ChrisBint

関連する問題