asp.net mvc 根据路由生成正确的url
假设存在这样一段路由配置:
routes.MapRoute(
name: "ProductList1_01",
url: "pl/{bigSortId}_{smallSortId}_{brandId}.html",
defaults: new { controller = "NewStore", action = "ProductList" },
namespaces: mallNS
);
routes.MapRoute(
name: "ProductList1_02",
url: "pl/{bigSortId}_{smallSortId}.html",
defaults: new { controller = "NewStore", action = "ProductList" },
namespaces: mallNS
);
routes.MapRoute(
name: "ProductList1_03",
url: "pl/{bigSortId}.html",
defaults: new { controller = "NewStore", action = "ProductList" },
namespaces: mallNS
);
如果我希望自动匹配到 pl/{bigSortId}_{smallSortId}.html,我会这样写:
@Url.Action("ProductList", new { bigSortId = Model.BigSortId, smallSortId = Model.SmallSortId, brandId = "" })
但如果页面存在form,并且存在向当前页面的post brandId表单元素,可能造成生成这样的Url:
/pl/11_02.html?brandId=293,导致虽然路由匹配正确,但仍然出现了问号及后面的参数(而这里我是希望生成的链接为:/pl/11_02.html)
为了达到这个目的,而又不将Url写死,修改路由配置为:
routes.MapRoute(
name: "ProductList1_01",
url: "pl/{bigSortId}_{smallSortId}_{brandId}.html",
defaults: new { controller = "NewStore", action = "ProductList" },
namespaces: mallNS
);
routes.MapRoute(
name: "ProductList1_02",
url: "pl/{bigSortId}_{smallSortId}.html",
defaults: new { controller = "NewStore", action = "ProductList" ,brandId="" },
namespaces: mallNS
);
routes.MapRoute(
name: "ProductList1_03",
url: "pl/{bigSortId}.html",
defaults: new { controller = "NewStore", action = "ProductList", smallSortId = "", brandId="" },
namespaces: mallNS
);
解决此问题。
asp.net mvc 根据路由生成正确的url的更多相关文章
- ASP.NET MVC API 路由生成规则
我们都知道调用ASP.NET MVC的某些API函数(诸如:Url.Action.RedirectToAction等)可以生成URL,ASP.NET MVC会根据调用API函数时传入的参数去匹配系统定 ...
- 理解ASP.NET MVC的路由系统
引言 路由,正如其名,是决定消息经由何处被传递到何处的过程.也正如网络设备路由器Router一样,ASP.NET MVC框架处理请求URL的方式,同样依赖于一张预定义的路由表.以该路由表为转发依据,请 ...
- ASP.NET MVC 自定义路由中几个需要注意的小细节
本文主要记录在ASP.NET MVC自定义路由时,一个需要注意的参数设置小细节. 举例来说,就是在访问 http://localhost/Home/About/arg1/arg2/arg3 这样的自定 ...
- 返璞归真 asp.net mvc (2) - 路由(System.Web.Routing)
原文:返璞归真 asp.net mvc (2) - 路由(System.Web.Routing) [索引页] [源码下载] 返璞归真 asp.net mvc (2) - 路由(System.Web.R ...
- asp.net mvc 特性路由(MapMvcAttributeRoutes)的应用
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012835032/article/details/51160824asp.net mvc 特性路由 ...
- asp.net mvc 中 一种简单的 URL 重写
asp.net mvc 中 一种简单的 URL 重写 Intro 在项目中想增加一个公告的功能,但是又不想直接用默认带的那种路由,感觉好low逼,想弄成那种伪静态化的路由 (别问我为什么不直接静态化, ...
- 在ASP.NET MVC中使用IIS级别的URL Rewrite
原文 在ASP.NET MVC中使用IIS级别的URL Rewrite 大约一年半前,我在博客上写过一系列关于URL Rewrite的文章(2.3.4),把ASP.NET平台上进行URL Rewrit ...
- ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关系
ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的.如果我们将最终处理HTTP请求的组件称为HttpHandler,那么RouterMiddleware中间 ...
- ASP.NET MVC 解析模板生成静态页一(RazorEngine)
简述 Razor是ASP.NET MVC 3中新加入的技术,以作为ASPX引擎的一个新的替代项.在早期的MVC版本中默认使用的是ASPX模板引擎,Razor在语法上的确不错,用起来非常方便,简洁的语法 ...
随机推荐
- Macaca初体验-PC端(Python)
前言: Macaca 是一套面向用户端软件的测试解决方案,提供了自动化驱动,周边工具,集成方案.由阿里巴巴公司开源:http://macacajs.github.io/macaca/ 特点: 同时支持 ...
- webWorker
一.webWorker之初体验 在"setTimeout那些事儿"中,说到JavaScript是单线程.也就是同一时间只能做同一事情. 也好理解,作为浏览器脚本语言,如果JavaS ...
- Final互评------《弹球学成语》---- 杨老师粉丝群
一.基于NABCD评论作品,及改进建议 1.根据(不限于)NABCD评论作品的选题; N(Need,需求):本产品面相青少年及小学生,基于这些用户数量再加上一些休闲玩家,需求量还是比较大的. A ...
- process.tar.gz
exec1.c #include <stdio.h> #include <unistd.h> int main() { char *arglist[3]; arglist[0] ...
- Daily Scrum - 12/0809
Meeting Minutes (08的Scrum报告放在word里,publish没有成功,所以这是08-09的报告,抱歉…): 卡片翻转的效果确认完成: 按钮蓄力的效果确认完成: 按钮上移的效果确 ...
- 分析code
1 using System; //跟系统说明一下可能会用到这个dll里面的东西 using System.Collections.Generic; //引用集合类命名空间 using System. ...
- Mysql存储引擎federated
Mysql数据库存储引擎federated(联盟) 意思就是把两个不同区域的数据库联系起来,以致可以访问在远程数据库的表中的数据,而不是本地的表.->专门针对远程数据库的实现->一般情况下 ...
- VC++ 常见问题及其解决方法
1. 无法找到“XXX.exe”的调试信息,或者调试信息不匹配: 选择 配置属性->链接器->调试->生成调试信息 改为 是 选择 配置属性->C/C++ ->常规-&g ...
- BZOJ2440 中山市选2011完全平方数(容斥原理+莫比乌斯函数)
如果能够知道不大于n的合法数有多少个,显然就可以二分答案了. 考虑怎么求这个.容易想到容斥,即枚举完全平方数.我们知道莫比乌斯函数就是此种容斥系数.筛出来就可以了. 注意二分时会爆int. #incl ...
- 【刷题】BZOJ 3724 PA2014Final Krolestwo
Description 你有一个无向连通图,边的总数为偶数. 设图中有k个奇点(度数为奇数的点),你需要把它们配成k/2个点对(显然k被2整除).对于每个点对(u,v),你需要用一条长度为偶数(假设每 ...