ASP.NET MVC3 通过Url传多个参数方法

MVC3通过URL传值,一般情况下都会遇到【从客户端(&)中检测到有潜在危险的 Request.Path 值】的问题

这个问题的解决方法,我的其他博文已经有了说明,这里给出连接;【从客户端(&)中检测到有潜在危险的 Request.Path 值】解决方法

 

方法一:

Url传参是通过Get的方式,一般我们都是通过一定规则的Url来传参。比如下面的URL。

http://localhost/contorller/action/?Params1=a&Params2=b

 注意:URL里面的“?”不能去掉哦,我曾经将URL路由和url参数混淆,就是上面的URL里面没有“?”,搞了2天时间才弄清楚问题出在哪里。大家可不要犯同样的错误哦。

我们可以在controller中通过绑定方法的方式来进行获取,代码如下:

 

[csharp] view plaincopy

 

  1. public ActionResult Index(ExpModel model, string Params1 , string Params2)  
  2. {  
  3.             ViewBag.P1 = Params1 ;  
  4.             ViewBag.P2= Params2;   
  5.             return View();  
  6. }  

 

方法二:

修改MVC3中的路由规则

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

[csharp] view plaincopy

 

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

 

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:这个是用于设置路由搜索的控制器命名空间!

 

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

[csharp] view plaincopy

 

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

 

如果访问的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

时间: 2024-08-02 04:40:57

ASP.NET MVC3 通过Url传多个参数方法的相关文章

ASP.NET实现根据URL生成网页缩略图的方法_实用技巧

本文实例讲述了ASP.NET实现根据URL生成网页缩略图的方法.分享给大家供大家参考,具体如下: 工作中需要用到根据URL生成网页缩略图功能,提前做好准备. 在网上找了份源码,但是有错误:当前线程不在单线程单元中,因此无法实例化 ActiveX 控件"8856f961-340a-11d0-a9",解决后运行良好,记录在此备用! 起始页:Default.aspx <%@ Page Language="C#" AutoEventWireup="true&

ASP.NET MVC3站点设置html默认首页的方法

原因是我的ASP.NET MVC3项目没有首页,而IIS设置的默认文档Index.asp也不生效了. ASP.NET MVC3网站设置首页为html或asp文件 打开Global.asax,添加如下代码即可解决:  代码如下 复制代码 protected void Application_BeginRequest(object sender, EventArgs e) {     if (Context.Request.FilePath == "/") Context.RewriteP

有关JAVA的URL传特殊符号参数的转码解决

对于如下的URL传参,能够被服务器request接收的参数值可能会丢失后面的部分(&符号及后面的'test'): Java代码 http://192.168.2.108:8080/MealOrder/LoginServlet?userAccount=Test&userPwd=20&test 如何解决呢?使用UTF-8编码即可,推荐如下的一个百度网页转码小应用(选择搜索出来的第一个),当然,有很多其他获取编码转码的方法喽,个人喜好,随意. Java代码 http://www.baid

asp.net silverlight批量上传控件实现方法

    /// <summary>     /// 文件的状态     /// </summary>     internal enum filestatus     {         /// <summary>         /// 准备就绪,等待上传         /// </summary>         ready = 0,         /// <summary>         /// 正在上传中         /// &

JS 解析url中的中文参数方法

在浏览器中显示的地址是这样的:   但是按F12调试的时候的地址却变化掉了: 这个肯定是是因为浏览器对url路径默认编码了.这个问题是在我们去取值的时候,得到的就是后面那一大串稀奇古怪的东西.得不到我们想要的值.怎么办呢?这里写出来的只是自己的解决方法,也许不能通用,跟大家分享下,有更好的方法,告我一声. //得到url中的值 function request(paras){     var url = location.href;      var paraString = url.subst

AngularJS向后端ASP.NET API控制器上传文件_AngularJS

本文实例介绍了前端AngularJS向后端ASP.NET Web API上传文件的实现方法,具体内容如下 首先服务端: public class FilesController : ApiController { //using System.Web.Http [HttpPost] public async Task<HttpResponseMessage> Upload() { if(!Request.Content.IsMimeMultipartContent()) { this.Requ

使用JQuery 获取当前[jsp,html,aps,php,...url传参值]

例如:update.jsp?sid=12        怎么获取当前url 传过来的参数 sid=12 呢.下面正好解决了您的需求.但不是最好的!    代码运行效果:

asp.net文件上传的三种方法

asp教程.net文件上传的三种方法 <%@ Page language="C#"%> <%@ Import Namespace="System.IO" %> <script runat="server">     void UploadButton_Click(object sender, EventArgs e)     {         string savePath = @"c:"

请问一下asp.net mvc3怎么实现将上传的excel表格的数据导入sql server数据库?

问题描述 请问一下asp.net mvc3怎么实现将上传的excel表格的数据导入sql server数据库? 现在有一个项目,是要求用户上传一个excel文件,系统后台实现将上传的数据写到数据库相应的表中~请大声多多指教 解决方案 asp.net:上传excel表格到SQL Server数据库asp.net 将EXCEL表格数据导入到SQL Server数据库asp.net中Excel导入sql server数据库---------------------- 解决方案二: 这问题太简单了...