asp.net web form 使用URL路由 注不是mvc中的路由
一、前臺控件使用路由,通過表達式生成url地址,注意給路由參數賦值,防止使用了其他路由表達式值方式1:<asp:HyperLink ID="hlSupply" NavigateUrl='<%$RouteUrl:routename=TechSupplySearch,areacode=,techfield=%>' runat="server">技術供給</asp:HyperLink>方式2:<a href="<%=GetRouteUrl("MemberSearch",new { membertype="Commpany" ,areacode="",industrycode="",pageindex="" }) %>">科技企業</a>控件界面數據綁定中使用 <asp:Repeater ID="myGrid" ViewStateMode="Disabled" runat="server"> <ItemTemplate> <li><a target="_blank" href='<%# this.GetRouteUrl("TechSupplyView", new { id=Eval("SupplyId")}) %>' ><%# Eval("SupplyName")%></a><span><%# string.IsNullOrEmpty(Eval("cityname").ToString()) ? " " : Eval("cityname")%></span><span><%# Eval("hightech")%></span> </li> </ItemTemplate> </asp:Repeater>url 路由分頁控件:urlpager
二、服務端后臺代碼使用路由
1、Global.asax文件: void application_Start(object sender, EventArgs e) { //在應用程序啟動時運行的代碼 RegisterRoutes(RouteTable.Routes); } //注冊url路由 void RegisterRoutes(RouteCollection routes) { routes.RouteExistingFiles = false; //默認不路由與物理路徑一致的url:如http://localhost/MyFolder/MyPage.aspx;好處是不對靜態資源文件進行路由,否則靜態文件如js、CSS等會導致多次觸發Page_Load事件。 //routes.Ignore("{resource}.axd/{*pathinfo}");//經實踐這種方式屏蔽對靜態資源文件的路由無效。 //routes.Ignore("{path}/{name}.jpg");//經實踐這種方式屏蔽對靜態資源文件的路由無效。 //注冊路由 routes.MapPageRoute("TechNewsSearch", "TechNews/{pageindex}", "~/NewsInfo/TechNewsSearch.aspx", true, new RouteValueDictionary { { "pageindex", "1" } }, new RouteValueDictionary { { "pageindex", @"/d{1,}" } }); routes.MapPageRoute("TechSupplySearch", "Supply/{areacode}/{techfield}/{pageindex}", "~/TechSupply/TechSupplySearch.aspx", true, new RouteValueDictionary { { "areacode", "0" }, { "techfield", "0" }, { "pageindex", "1" } }, new RouteValueDictionary { { "pageindex", @"/d{1,}" } }); routes.MapPageRoute("MemberSearch", "Members/{membertype}/{areacode}/{industrycode}/{pageindex}", "~/Member/MemberSearch.aspx", true, new RouteValueDictionary { { "membertype", "0" }, { "areacode", "0" }, { "industrycode", "0" }, { "pageindex", "1" } }, new RouteValueDictionary { { "pageindex", @"/d{1,}" } });}
2、WebForm頁面后臺代碼中使用
獲取、更改路由參數值routeValue = Page.RouteData.Values["techfield"] == null ? string.Empty : Page.RouteData.Values["techfield"].ToString();//獲取路由參數Page.RouteData.Values["areacode"] = selOrgan.SelectedValue;//所在地 更改路由參數Page.RouteData.Values.Remove("Over"); //移除路由參數后臺代碼中生成路由地址newUrl = this.GetRouteUrl("MemberSearch", Page.RouteData.Values);頁面客戶端跳轉路由方式實現Response.RedirectToRoute("TechSupplySearch", Page.RouteData.Values);Response.RedirectToRoutePermanent("TechSupplySearch", Page.RouteData.Values);
新聞熱點
疑難解答