【问题标题】:How to simulate MVC routing in WebForm ASP.Net?如何在 WebForm ASP.Net 中模拟 MVC 路由?
【发布时间】:2020-07-29 18:02:12
【问题描述】:

你们都看到了 MVC 默认如何以 url 的形式缩小 URL:“{controller}/{action}/{id}”。它在 RouteConfig.cs 中完成。

我正在寻找一种方法,以便像 mywebsite.com/Page/Default.aspx?id=100&Browser=ff 这样的网络表单 URL 更改为 mywebsite.com/Page/Default/100?Browser=ff,应该在 Globa.ascx 中完成。

StackOverFlow 网站上有一些帖子指导如何将保留的 URL 重定向到某个页面,很明显我的问题是别的,我正在寻找一种在 Global.ascx 中提供模式的方法。

【问题讨论】:

    标签: asp.net webforms routing


    【解决方案1】:

    在解决方案资源管理器中,在您的项目下,添加一个新的 ASP.NET 项“Global.asax”

    添加 using 语句:

    using System.Web.Routing;
    

    在 Application_Start 事件中,输入您的路由 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 时它可以工作,当我没有准备 controlactionid 时遇到错误 404 @ 所以 mywebsite.com/Page/Default因为 URL 不起作用。我需要 * 在 routeUrl {*control} 吗?毕竟似乎没有办法准确地模拟 MVC 路由。
    • 我已经更新了上面的答案。您需要为纯mywebsite.com/Page/Default添加另一条路由
    猜你喜欢
    • 1970-01-01
    • 2010-11-29
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 2014-02-09
    • 2020-07-07
    • 2010-10-22
    • 1970-01-01
    相关资源
    最近更新 更多