繁体   English   中英

如何知道我需要哪个RedirectToAction?

[英]how to know which RedirectToAction I need?

为了避免代码重复,我创建了一个基本控制器,其他两个控制器也派生自该基本控制器。

在这些控制器中,我 2个ActionResult,大约80行,而79行是相同的。 唯一的区别是ActionResult末尾的重定向操作。

我的问题是:是否有办法知道需要调用哪个RedirectToAction ,即我们需要返回哪个控制器?

首先,除非绝对需要,否则请避免使用基本控制器。 它们往往成为共享内容的垃圾场,最终您会得到大量的内容,这些内容仅适用于您的几个控制器,因为这样做比较容易。

最好使其成为不使用它们的策略,并且仅在绝对必要时才设置例外。

除此之外,控制器确实应该精益求精。 如果您的控制器是80行代码,则表明您在控制器中执行业务逻辑。 您可能应该在业务层中具有该逻辑。 而且,您可能违反了单一责任主体。

通过使用帮助程序类,可以在没有基本控制器的情况下实现相同的结果。 例如,您可以执行以下操作:

public static class MyHelper
{
    public static Foo DoSomething() { return new Foo();  }
}

public class MyController1 : Controller
{
    public ActionResult Index()
    {
        var result = MyHelper.DoSomething();
        return File(...);
    }
}

public class MyController2 : Controller
{
    public ActionResult Index()
    {
        var result = MyHelper.DoSomething();
        return JSON(...);
    }
}

您可能不直接检查模型中的某些情况,然后将重定向包装在if周围。 或者,添加查询字符串参数:

public ActionResult MyAction(MyModel model, string actionRedirect = null)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM