1

我想用查询字符串重写 URL。这是一个例子

例如

www.test.com/user.aspx?Name=1234

我想重写

www.test.com/1234

它可以正常www.test.com?Name=1234工作www.test.com/test/1234

我这样做是这样的:

void Application_Start(object sender, EventArgs e)
{
    // Code that runs on application startup
    RouteTable.Routes.MapPageRoute("StoreRoute",
        "{Name}",
        "~/Webpages/Test/Demo.aspx");
}
4

2 回答 2

0

如果我没记错的话,您的问题是您需要请求像 www.test.com/1234 这样的 URL,而不是 www.test.com/test/1234。

这可以使用您在 global.asax 文件中提到的路线来完成。但这里的问题是您在定义路线时直接使用了单个动态参数 {Name}。如果您想使用单个参数定义任何其他路由,则它将无法按如下所述工作:

RouteTable.Routes.MapPageRoute("StoreRoute","{Name}","~/Webpages/Test/Demo.aspx");
RouteTable.Routes.MapPageRoute("StoreRoute1","{Name1}","~/Webpages/Test/Demo1.aspx");

在上述情况下,第二个路由将被声明的第一个路由覆盖。

这就是原因,最好在路由声明中给出一个静态参数。

RouteTable.Routes.MapPageRoute("StoreRoute","test/{Name}","~/Webpages/Test/Demo.aspx");
RouteTable.Routes.MapPageRoute("StoreRoute1","test1/{Name1}","~/Webpages/Test/Demo1.aspx");

在后一种情况下,不会覆盖第二条路由。

现在,如果你只需要定义一个路由,那么你的代码就可以工作了。

您可以在下面的链接中查看我关于 URL 路由的博客系列。这个链接是我重新发布的帖子。

http://karmic-development.blogspot.in/2013/10/url-routing-in-aspnet-web-forms-same.html

谢谢和问候, Munjal

于 2013-10-13T12:55:27.013 回答
0
public class Global : System.Web.HttpApplication
{

    protected void Application_Start(object sender, EventArgs e)
    {
        RegisterRoutes(RouteTable.Routes);
    }

    protected void RegisterRoutes(RouteCollection routes)
    {
        routes.MapPageRoute("UserRoute", "{Name}", "~/user.aspx");

    }

    protected void Application_End(object sender, EventArgs e)
    {

    }
}

要访问该值,请使用var v = Page.RouteData.Values["Name"];

导航到 www.test.com/1234 的用户将由 www.test.com/user.aspx 处理,并且1234将使用上面的代码片段传递和访问该号码。

于 2013-10-12T18:57:36.210 回答