【问题标题】:Run single method from Multiple Actions in MVC controller从 MVC 控制器中的多个操作运行单个方法
【发布时间】:2017-08-05 10:43:46
【问题描述】:

我的控制器中的多个操作方法具有相同的以下代码。是否可以将其简化为单个方法并将多个操作路由到它?

[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);
}

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

【问题讨论】:

    标签: c# model-view-controller controller


    【解决方案1】:

    创建一个两个动作都会调用的通用方法。将这两个操作分开,因为它比编写(和阅读!)自定义路由更容易理解。

    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);
    }
    

    【讨论】:

    • 我已经这样做了,但实际上只想要一个方法而不是 2 调用另一个方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 2019-01-27
    • 1970-01-01
    • 2011-11-04
    • 1970-01-01
    相关资源
    最近更新 更多