大佬教程收集整理的这篇文章主要介绍了c# – asp.net webforms路由无法正常工作,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
www.abc.com/personal www.abc.com/personal/acounts-deposits www.abc.com/personal/acounts-deposits/current-account www.abc.com/personal/acounts-deposits/current-gold-account www.abc.com/personal/acounts-deposits/easy-saver-ac www.abc.com/personal/acounts-deposits/fixed-account www.abc.com/loans www.abc.com/loans/personal-loans www.abc.com/loans/car-loans
我的数据库结构包含样本数据如下所示
Page_ID Page_Name Page_url Page_Handler Parent_Page_ID 1 Home home index.aspx 0 2 Personal personal Personal.aspx 0 3 Accounts & Deposits personal/acounts-deposit Personal.aspx 2 4 Current Account personal/acounts-deposit/current-account Personal.aspx 3 5 Current Gold Accounts personal/acounts-deposit/gold-account gold-account.aspx 3 6 Easy Saver personal/acounts-deposit/easy-saaver-ac Personal.aspx 3 7 Fixed Deposits personal/acounts-deposit/fixed-account fixed-account.aspx 3 8 Loans loans loans.aspx 0 9 Personal Loans loans/personal-loans loans.aspx 8 10 car Loans car-loans car-loan.aspx 8
在我的Menu_Table中,我可以通过Page_url识别页面,因为它是唯一的.
routes.MapPageRoute("Personal_Route","en/{*path}","~/en/personal.aspx",false,new RouteValueDictionary { { "path","Page-not-found" },{ "Pagename","Page-not-found" } }); routes.MapPageRoute("Personal_Route2","~/en/gold-account.aspx","Page-not-found" } }); routes.MapPageRoute("Personal_Route2","~/en/fixed-account.aspx","Page-not-found" } });
上面的路由代码默认使用第一个路由personal.aspx作为所有URL的处理程序
我已经尝试了很长一段时间,但我无法做到正确,我会很感激这方面的帮助,以便每个页面都由基于Page_url的正确页面处理程序处理
www.abc.com/personal ---- (Personal.aspX) www.abc.com/personal/acounts-deposits -----(Personal.aspX) www.abc.com/personal/acounts-deposits/current-account -----(Personal.aspX) www.abc.com/personal/acounts-deposits/current-gold-account ----- (gold-account.aspX) www.abc.com/personal/acounts-deposits/easy-saver-ac -----(Personal.aspX) www.abc.com/personal/acounts-deposits/fixed-account ----- (fixed-account.aspx( www.abc.com/loans ----- (loans.aspX) www.abc.com/loans/personal-loans ----- (loans.aspX) www.abc.com/loans/car-loans ----- (car-loan.aspX)
在您的情况下,您使用相同的配置映射您的路径
routes.MapPageRoute("Personal_Route","en/{*path}" routes.MapPageRoute("Personal_Route2","en/{*path}"
等等.
这些路线中的每一条都将绝对匹配您的申请的所有请求
要实现目标,最好以这种方式进行映射:
//Take care to the sequensce of routes becuase if you will use route //"personal" before route "account" and you will receive a request to //"http://domain.com/personal/somethinghere route account will match //"en/personl/ and will proceed to redirect to "personal" desTination routes.MapPageRoute("account","en/personal/{q}/" ........... routes.MapPageRoute("personal","en/personal" ............ //Same as above routes.MapPageRoute("loancar","en/loan/{q}" ......... routes.MapPageRoute("loan","en/loan"
现在,当您正确创建和选择路线时,您可以通过简单的方式访问参数,并选择适合特定情况的操作,例如:
protected void Page_Load(object sender,EventArgs E) { if (Page.RouteData.Values.ContainsKey("q")) { if (Page.RouteData.Values["q"] !=null) { String p = (String)Page.RouteData.Values["q"]; switch (p) { case "a": //do something case "b": //do something case "c": // Do Something break; case "d": // Do Something break; default: // Do Something break; } } } }
现在,您必须对数据库进行一些小的更改,您只需在网址的最后一页填写它.
请注意如何映射它是非常重要的…..我已经向您展示了一个简单的例子,只有“静态路由”(个人)和动态路由只有一个名为path的参数.有很多方法可以通过更好的粒度来实现您的目标,这些都取决于您的需求.我希望它对您有所帮助.
更新:
您不必创建所有路线,您只需创建所需的顶级路线,然后您需要为每个部分创建或新页面,或使用multiwiex控制器在多个部分中拆分页面,以便显示正确的内容在示例中,如果您有个人页面用于显示页面的2/3/4部分,则可以使用多视图控件,该控件取决于{q}参数,然后使用此处的开关案例:
switch (p) { case "a": //do something multiview.ActiveViewIndex=0 case "b": //do something multiview.ActiveViewIndex=1 case "c": // Do Something multiview.ActiveViewIndex=2 break; case "d": // Do Something multiview.ActiveViewIndex=3 break; default: multiview.ActiveViewIndex=4 break; }
这是一种简单的方法.
在这种情况下,例如路线“PersonalRoute”暴露模式个人/账户存款可以用于这个特殊情况,如果你需要重定向到一个特定的情况.现在的问题是,我不知道你的业务逻辑是什么我不知道你的dal配置,所以我无法让你找到一个确切的方法.
以上是大佬教程为你收集整理的c# – asp.net webforms路由无法正常工作全部内容,希望文章能够帮你解决c# – asp.net webforms路由无法正常工作所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。