这就是我设计 RegisterRoutes 功能的方法。并根据条件选择 HomeController 的Action。到目前为止很好。
string env = "Index";
if (some condition from config)
{
env = "Test";
}
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = env, id = "" }
);
问题从默认情况下重定向到其他控制器时开始如果不指定动作(例如:我正在调用SampleController)“env”(在RegisterRoutes中设置被调用。如果env被设置为“索引” “如果设置了env,则调用索引操作”测试“也会在所有其他控制器中调用测试操作。
我的目的只是为了HomeController这个条件应该设置,对于所有其他控制器我希望Index是默认动作。
我如何使这项工作?是否可以动态更改所有其他控制器的操作?有没有更好的方法可以做到这一点。
分享您的建议
由于
答案 0 :(得分:2)
我认为你不应该在你的路由引擎中这样做。我会在代码中路由所有内容并从那里调用正确的操作。例如:
public ActionResult Index()
{
switch(config)
{
case "OtherAction":
return OtherAction();
case "AnotherAction":
return AnotherAction();
case "Index":
break;
default:
//Er, how did we get here?
throw new HttpNotFoundException();
}
//Normal index action continues here...
}
public ActionResult OtherAction() { ... }
public ActionResult AnotherAction() { ... }