1

こんにちはすべて私は多くの記事を見てきましurl rewritingたが、私の要件に従って何も見つかりませんでした。Default.aspx私が2つのページを持っていると仮定しDefault1.aspxます..最初のロード時に私は次のようなDefault.aspxものに書き直したいと思いますurlrewrite\dummy.aspxそしてDefault.aspx私はこれをクリックするとボタンがあります私はDefault1.aspxこれを書き直したいと思いますurlrewrite\dummy1.aspx

サンプルの書き直しを投稿するだけですが、リダイレクトするためのより良い方法があれば、私を助けてください。

20-50また、いくつかのページがある場合、すべてのページを書き直すための最良の方法は何ですか

私のglobal.asaxファイル

<%@ Application Language="C#" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Web.Routing" %>
<script RunAt="server">

    void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup
        RegisterRoutes(System.Web.Routing.RouteTable.Routes);
    }
    public static void RegisterRoutes(RouteCollection routeCollection)
    {
        string root = Server.MapPath("~");
        System.IO.DirectoryInfo info = new System.IO.DirectoryInfo(root);
        System.IO.FileInfo[] files = info.GetFiles("*.aspx", System.IO.SearchOption.AllDirectories);

        foreach (System.IO.FileInfo fi in files)
        {
            string pageName = fi.FullName.Replace(root, "~/").Replace("\\", "/");
            routeCollection.MapPageRoute(fi.Name + "Route", fi.Name, pageName);
        }

        routeCollection.MapPageRoute("DummyRouteName1", "Dummy", "~/Default2.aspx");
    }

    void Application_End(object sender, EventArgs e)
    {
        //  Code that runs on application shutdown

    }

    void Application_Error(object sender, EventArgs e)
    {
        // Code that runs when an unhandled error occurs

    }

    void Session_Start(object sender, EventArgs e)
    {
        // Code that runs when a new session is started

    }

    void Session_End(object sender, EventArgs e)
    {
        // Code that runs when a session ends. 
        // Note: The Session_End event is raised only when the sessionstate mode
        // is set to InProc in the Web.config file. If session mode is set to StateServer 
        // or SQLServer, the event is not raised.

    }

</script>
4

2 に答える 2

3

アプリケーションの開始時にGlobal.asaxファイルにルートを追加できます。

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

private void RegisterRoutes(RouteCollection routes)
{
    routes.MapPageRoute("DummyRouteName", "Dummy", "~/Default.aspx");
    ....
}

使用法:

Response.Redirect("~/Dummy");

URLに次のように表示されます:(サーバー)/ダミー

編集:

ルートを自動的に追加する方法は次のとおりです。

// Get root directory
string root = Server.MapPath("~");
DirectoryInfo info = new DirectoryInfo(root);
// Get all aspx files
FileInfo[] files = info.GetFiles("*.aspx", SearchOption.AllDirectories);

foreach (FileInfo fi in files)
{
    // Get relative path
    string pageName = fi.FullName.Replace(root, "~/").Replace("\\", "/");
    // Add route
    routes.MapPageRoute(fi.Name + "Route", fi.Name.Replace(".aspx", ""), pageName);
}
于 2012-05-11T11:04:48.750 に答える
0

書き換え部分がカバーされ、問題はポストバックだけだと思います。次のようにフォームアクションを設定することで、ポストバックを「わかりやすい」URLに設定できます。

Page.Form.Action = Page.Request.RawUrl;
于 2012-05-11T11:19:04.140 に答える