1

问候,请原谅我可能不重要的问题,我只是想重新装饰我在 Asp.net Web Forms 应用程序中使用的 URL,就像使用 razor 的 Asp.net MVC 应用程序一样,我所做的第一步是删除aspx 继任者,我已经完成了这个,但我尝试的第二步是将 pagename?id=someid 替换为 pagename/id 或除常用公式之外的任何公式,最终任务是减少在ULR 因此删除 .aspx 将排除 4 个字符,第二种方法将用斜杠替换 ?id= 并用 pagename+id 重命名页面,例如 n1 不会命中服务器,因为页面名称会被更改,欢迎提出任何建议!我对我的 web.config 进行了以下更改以排除 aspx 继任者

<system.webServer>
        <rewrite>
            <rules>
                <rule name="RewriteASPX">
                    <match url="(.*)" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="{R:1}.aspx" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
4

1 回答 1

1

更新!经过几个小时的搜索和测试,我能够找到半解决方案,我称之为半解决方案,因为 ajax 调用不再工作,并且任何具有更新面板的页面都显示与 axd 相关的错误,我使用路由作为下面的链接

带有 Web 窗体的 ASP.NET 路由

刚刚将以下代码添加到 global.asax 文件中

protected void Application_Start(object sender, EventArgs e)
        {
            RegisterRoutes(RouteTable.Routes);
        }
        void RegisterRoutes(RouteCollection routes)
        {
               routes.MapPageRoute(
                "mypage",
                "mypage/{Name}",
                "~/mypage.aspx"
                                  );
         }

在我的页面上,我重定向为:

Response.Redirect(GetRouteUrl("mypage", new { Name = "myparam" }));
于 2021-05-08T04:05:20.100 回答