如何在控制器中添加路由
本文关键字:添加 路由 控制器 | 更新日期: 2023-09-27 18:21:17
我想在向db提交一个新对象后映射一个新路由。因此,例如,如果我输入名为"Test"的对象,我希望立即有一个新的路由,以解决"Test.aspx"。
我试过
System.Web.Routing.RouteTable.Routes.MapRoute(obj.NameUrl, obj.NameUrl + extension, new { controller = "per", action = "Index", name = obj.NameUrl });
在控制器中,但它不工作(没有错误,只是可能不是生命周期中的正确时间?)。相同的代码在Application_Start()
中工作
您应该避免动态注册路由。Application_Start
中的以下静态路由应该能够处理具有动态路由参数的情况:
routes.MapRoute(
"page",
"{name}.aspx",
new { controller = "per", action = "index" },
new { name = @"[a-z0-9]+" }
);
如果扩展也必须是动态的:
routes.MapRoute(
"page",
"{name}.{extension}",
new { controller = "per", action = "index" },
new { name = @"[a-z0-9]+", extension = @"[a-z]{3,4}" }
);
然后您可以使用Index操作来处理对该路由的请求:
public class PerController: Controller
{
public ActionResult Index(string name, string extension)
{
...
}
}
如果你想生成一个链接到这个动作:
@Html.RouteLink("go to foo", "page", new { name = "foo", extension = "aspx" })