如何知道我需要哪个RedirectToAction?
问题描述:
我已经创建了一个基本控制器,其中我的两个其他控制器来源于,以避免代码重复。如何知道我需要哪个RedirectToAction?
我有 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(...);
}
}
“2 ActionResult's in these controllers”意味着方法在派生控制器中。但是你后来在基础控制器中发表的评论。请将您在基本控制器和派生控制器中具有的功能列出,以便清楚明确,而且我们不必猜测。 – AaronLS 2015-04-05 00:37:00
我改了一个字,现在以粗体显示。希望现在清楚:)我在派生控制器中使用了这些方法,现在它们在基本控制器中。 – Forza 2015-04-05 01:14:25
“现在他们在基础控制器中”该信息不在您的问题中。您声明派生控制器中有两种方法,并且您不会说基本控制器中的内容。 – AaronLS 2015-04-05 04:00:22