asp.netmvc通过修改路由规则来实现页面的URL多参数传递

【原文】http://blog.csdn.net/risingsun001/article/details/9068187

修改MVC3中的路由规则

在Global.asax.cs中,修改路由规则

原路由规则

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
                "Default", // 路由名称
                "{controller}/{action}/{id}", // 带有参数的 URL
                new { controller = "Home", action = "Index", id = UrlParameter.Optional} // 参数默认值
            );

MapRoute方法在RouteCollectionExtensions里有6个重载版本!在这里我挑了一个参数最多的重载版本来进行介绍

public static Route MapRoute(
    this RouteCollection routes,
    string name,
    string url,
    Object defaults,
    Object constraints,
    string[] namespaces
)

name:路由在路由列表里的唯一名字(两次MapRoute时name不能重复)

url:路由匹配的url格式

defaults:路由url {占位符} 的默认值

constraints:url的 {占位符} 的约束

namespaces:这个是用于设置路由搜索的控制器命名空间!

比如,我们可以修改为下面的规则

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
                "Default", // 路由名称
                "{controller}/{action}/{uid}_{token}_{others}.html", // 带有参数的 URL
                new { controller = "Home", action = "Index", uid = UrlParameter.Optional, token = UrlParameter.Optional,others = UrlParameter.Optional} // 参数默认值
            );

如果访问的URL地址如:http://localhost/home/index/123_tokenvalue_othersvalue.html

controller="Home", action="Index", uid=123, token=tokenvalue, others=othersvalue

获取和上面的方法一样。

关于Route 的详细用法和说明,大家看MSDN 上的资料吧,这里给个连接:

ASP.NET Routing:http://msdn.microsoft.com/en-us/library/cc668201.aspx?cs-save-lang=1&cs-lang=csharp

更多相关文章
  • 注意:本文所讲述的并非MVC框架.ASP.NET 3.5 SP1中提供了一种路由技术.ASP.NET 路由是一种能够使我们在ASP.NET应用程序中利用一种可描述的.对搜索引擎和用户很友好的URL访问资源的技术.这种URL不必物理地映射到真正的资源.比如:http://dotnet.aspx.cc/ ...
  • ASP.NETMVC验证-自定义验证规则、验证2个属性值不等待验证
    提示:保存后才提示错误信息 自定义验证特性,继承ValidationAttribute并实现IClientValidatable 这次重写了基类的IsValid()方法的另外一个重载,因为该重载包含了验证上下文ValidationContext,从中可以获取属性及属性值. using System. ...
  • ASP.NetMVC开发基础学习笔记1:走向MVC模式
    链接地址:http://blog.jobbole.com/84992/ 一.ASP.Net的两种开发模式 1.1 ASP.Net WebForm的开发模式 (1)处理流程 在传统的WebForm模式下,我们请求一个例如http://www.aspnetmvc.com/blog/index.aspx的 ...
  • 转深入ASP.NETMVC之二:路由模块如何工作
    本文转自:http://www.cnblogs.com/yinzixin/archive/2012/11/05/2754483.html 摘要: 上文分析了UrlRouting模块何时会被触发,本文重点分析路由模块是如何工作,以及如何利用路由模块实现Area. 先看路由模块的PostResolveR ...
  • 转ASP.NETMVC的帮助类HtmlHelper和UrlHelper
    本文转自:http://www.cnblogs.com/greatandforever/archive/2010/04/20/1715914.html?login=1 在ASP.NET MVC框架中没有了自己的控件,页面显示完全就回到了写html代码的年代.还好在asp.net mvc框架中也有自带 ...
  • 使用IdleTest进行TDD单元测试驱动开发演练3之ASP.NETMVC
    一.[前言] (1)本文将用到IOC框架Unity,可参照<Unity V3 初步使用 —— 为我的.NET项目从简单三层架构转到IOC做准备>(2)本文的解决方案是基于前述<使用IdleTest进行TDD单元测试驱动开发演练(1)>.<使用IdleTest进行TDD单 ...
  • 在ASP.NETMVC实现购物车,尝试一种不同于平常的购物车显示方式
    通常,我们看到的购物车是这样的:     虽然这种购物车显示方式被广泛运用,但我个人觉得不够直观.如果换成这样呢?     本篇的源码放在了:https://github.com/darrenji/ShoppingCartInMVC   以上购物车页能实现的效果包括:1.购物车明细:显示订购数量.总 ...
  • 配置项 application/config/routes 就是说的这里!   路由控制 让你的页面按照你希望的url方式去访问   路由自定义 帮助你实现路由的寻址,也就是key($var) =>value($url) 意义就是在向服务器发出请求之前的一步,你还可以再这里改变他寻址路径,也就 ...
一周排行
  • 一.在nagios服务端的/usr/local/nagios/etc/下创建monitorhosts文件夹#mkdir /usr/local/nagios/etc/monitorhosts#chown nagios. ...
  • RHCE部分--Red Hat Certificate Engineer ( 接RHCT部分继续解答)阅读说明:  //后的文字为注解  ;   #为root权限下命令行 ;  蓝色字体为答案  ;  未有任何标识并 ...
  • 创建AssetBundle1.新建一个cube,将其拉倒Project视图里创建预设.2.在Assets目录下创建Scenes文件夹,创建场景scene1.unity.3.新建ExportAssetBundles.c ...
  • cat /proc/uptime| awk -F. '{run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_sec ...
  • HTML 是用来描述网页的一种语言.HTML 指的是超文本标记语言 (Hyper Text Markup Language)HTML 不是一种编程语言,而是一种标记语言 (markup language)标记语言是一 ...
  • Windows Server 2008 各版本最大内存限制Windows Server 2008 x86Windows Server 2008 标准版,支持最大 4GB 内存Windows Server 2008 企 ...
  • 刚刚上手android,在写一个利用Socket与服务器端进行通信的Demo时候报了一个android.os.NetworkOnMainThreadException的异常:服务器端:public class Sim ...
  • 今天使用QTP录制托盘点击脚本,发现录制不了,解决方案如下:首先,由于录制不了所以需要手工添加对象 点击Resouces->Object Repositry 在弹出窗体的菜单中选择add object to l ...
  • CAM是Content Aggregation Model的缩写,也就是内容集成模型,是Scorm标准中的重要组成部分,集中描述了符合Scorm标准的课件的构成形式. 要理解CAM首先需要理解内容(Content), ...
  • ubuntu 14.04 网络图标消失解决方法问题描述:      安装输入法导致图标消失.解决方法:sudo apt-get install indicator-application sudo apt-get i ...