ASP.Net Web窗体URL使用不同的URL路由相同的页面

时间:2015-04-24 03:59:40

标签: c# asp.net webforms url-routing

我正在尝试在我的网络表单应用程序中使用URL路由,以使网址更加用户友好。我想对我的一个页面使用以下映射:

/services --> common/services.aspx
/services/seo --> common/services.aspx#seo
/services/hosting --> common/services.aspx#web-hosting

有人可以帮我写一下这个场景的正确路由吗?我基本上想要将用户重定向到同一页面上具有不同URL的不同部分。

一些已经有效的网址是:

//About Us
routes.MapPageRoute("", "about", "~/common/about.aspx", false);

//Contact Us
routes.MapPageRoute("", "contact", "~/common/contact.aspx", false);

只有以下第一项工作 -

//Services - works
routes.MapPageRoute("", "services/{service}", "~/common/services.aspx", false);

//does not work
routes.MapPageRoute("", "services/web-development", "~/common/services.aspx#web", false);
routes.MapPageRoute("", "services/seo", "~/common/services.aspx#seo", false);
routes.MapPageRoute("", "services/digital-marketing", "~/common/services.aspx#marketing", false);

3 个答案:

答案 0 :(得分:1)

对于任何面临类似问题的人来说,这就是我最后所做的。我将所有网址的路由设置为同一页面 -

//Services
routes.MapPageRoute("", "services", "~/common/services.aspx", false);
routes.MapPageRoute("", "services/web-development", "~/common/services.aspx", false);
routes.MapPageRoute("", "services/seo", "~/common/services.aspx", false);
routes.MapPageRoute("", "services/digital-marketing", "~/common/services.aspx", false);

并移动逻辑跳转到页面部分javascript(使用jQuery):

$(function () {
            if (window.location.href.indexOf("web-development") > 0) {
                $('html,body').animate({ scrollTop: $(".service-web-development").offset().top }, 0);
            }
            else if (window.location.href.indexOf("seo") > 0) {
                $('html,body').animate({ scrollTop: $(".service-seo").offset().top }, 0);
            }
            else if (window.location.href.indexOf("digital-marketing") > 0) {
                $('html,body').animate({ scrollTop: $(".service-marketing").offset().top }, 0);
            }
        });

这将检查页面的URL并将窗口位置移动到页面的相应部分。

答案 1 :(得分:0)

答案 2 :(得分:0)

出于安全原因,Web浏览器会阻止服务器端(ASP.NET)读取#片段之后的任何内容。因此,除非在客户端(JavaScript)...

,否则您将无法在页面之间进行通信