如何在WebFormASP.Net中模拟MVC路由?
你们都已经看到了MVC是如何在默认情况下以URL的形式缩小URL的:{controller}/{action}/{id}。这是在RouteConfig.cs中完成的 我正在寻找一种方法,使像如何在WebFormASP.Net中模拟MVC路由?,asp.net,webforms,routing,Asp.net,Webforms,Routing,你们都已经看到了MVC是如何在默认情况下以URL的形式缩小URL的:{controller}/{action}/{id}。这是在RouteConfig.cs中完成的 我正在寻找一种方法,使像mywebsite.com/Page/Default.aspx?id=100&Browser=ffmywebsite.com/Page/Default/100?Browser=ff这样的网络表单URL更改为mywebsite.com/Page/Default/100?应该在Globa.ascx中完成 Stac
mywebsite.com/Page/Default.aspx?id=100&Browser=ffmywebsite.com/Page/Default/100?Browser=ff这样的网络表单URL更改为mywebsite.com/Page/Default/100?应该在Globa.ascx中完成
StackOverFlow网站中有一些帖子指导如何将保留URL重定向到某个页面,很明显,我的问题是另外一个问题,我正在寻找一种在Global.ascx中提供模式的方法。在解决方案资源管理器的项目下,添加一个新的ASP.NET项目“Global.asax”
添加using语句:
using System.Web.Routing;
在应用程序启动事件中,键入路由URL,例如:
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.MapPageRoute("default1", "Page/Default", "~/Page/Default.aspx");
RouteTable.Routes.MapPageRoute("default2", "Page/Default/{controller}/{action}/{id}", "~/Page/Default.aspx");
}
然后,在页面加载事件中:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string controller = RouteData.Values["controller"] + "";
string action = RouteData.Values["action"] + "";
string id = RouteData.Values["id"] + "";
}
}
谢谢兄弟,我尝试了你的解决方案,当我完整地键入URL时,它起作用了,当我没有准备控件
,操作
和id
时,我遇到了错误404,因为URL不起作用。我是否需要在routeUrl{*control}
中使用*
?。毕竟,似乎没有办法精确模拟MVC路由。我已经更新了上面的答案。您需要为puremywebsite.com/Page/Default添加另一条路由