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
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 に答える
0

私が間違っていなければ、あなたの問題は、www.test.com/test/1234 ではなく、www.test.com/1234 のような URL を要求する必要があることです。

これは、global.asax ファイルで言及したルートを使用して実行できます。ただし、ここでの問題は、ルートを定義するときに単一の動的パラメーター {Name} を直接使用したことです。単一のパラメーターで他のルートを定義する場合、以下で説明するように機能しません。

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

上記の場合、2 番目のルートは宣言された最初のルートによってオーバーライドされます。

そういうわけで、ルート宣言で静的パラメーターを指定する方が良いです。

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

後者の場合、2 番目のルートは上書きされません。

ここで、単一のルートを定義するだけでよい場合、コードは機能します。

URL ルーティングに関する私のブログ シリーズは、以下のリンクで確認できます。このリンクは私の再送信された投稿です。

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

よろしくお願いします、ムンジャル

于 2013-10-13T12:55:27.013 に答える