浅谈Asp.net Mvc之Action如何传多个参数的方法
最近,工作上有一个需要:用户查询日志文件信息,查看某一个具体日志信息,可能同时查看该日志所在日期的其他日志信息列表。
为完成此功能,我打算在URL中传入了两个参数,一个记录此日志时间,另外一个记录日志的主键ID,因此,准备从Asp.net MVC的路由入手。
在Global.asax文件中,默认路由如下。
routes.MapRoute( "Default", // 路由名称 "{controller}/{action}/{id}", // 带有参数的 URL new { controller = "Logon", action = "Logon", id = UrlParameter.Optional } // 参数默认值 );
这个路由中,在Action后面只能传入一个参数,不能传入多个参数,因此,需要增加路由信息。
在Global文件中,新增了一个路由,路由名称为“Default1",代码如下
//第一种路由 传两个参数过去 routes.MapRoute("Default1", "{controller}/{action}/{Parma1}/{Parma2}", new { controller = "", action = "" }, new { });
上述路由,可以传入两个参数。
在此,我们建一个TestController,添加一个Test.cshtml页面,在TestController写下代码,如下
public ActionResult Test(string date, string id) { ViewData["date"] = date; ViewData["id"] = id; return View(); }
在Test.cshtml页面中写如下代码
要查询的日志时间为:@ViewData["date"]<br /> 要查询的日志ID为:@ViewData["id"]<br />
运行编译器,然后在浏览器中输入 ”http://localhost:11507/Test/Test/2013-12-18/5“,页面显示如下
要查询的日志时间为:2013-12-18
要查询的日志ID为:5
现在又有一个问题来了,需要传入多个参数,怎么办呢?当然,只有新添加新的路由”Default2"。代码如下
//第二种路由 传多个参数,只是获得的第二个下划线后的所以数据 routes.MapRoute("Default2", "{controller}/{action}/{*id}", new { controller = "", action = "" } );
运行编译器,然后在浏览器中输入 ”http://localhost:11507/Test/Test/2013-12-18/5/xianrongbin“,页面显示如下
要查询的日志时间为:
要查询的日志ID为:2013-12-18/5/xianrongbin
这里我们只能得到Action后面所有的参数,对此,我们可以解析出来,比如日志时间是 “2013-12-18",日志ID为”5“,日志操作者是”xianrongbin"。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
ASP.NET实现MVC中获取当前URL、controller及action的方法
本文实例讲述了ASP.NET实现MVC中获取当前URL.controller及action的方法.分享给大家供大家参考,具体如下: URL的获取很简单,ASP.NET通用: [1]获取 完整url (协议名+域名+虚拟目录名+文件名+参数) string url=Request.Url.ToString(); [2]获取 虚拟目录名+页面名+参数: string url=Request.RawUrl; 或 string url=Request.Url.PathAndQuery; [3]获取 虚拟
-
详解ASP.NET MVC下的异步Action的定义和执行原理
Visual Studio提供的Controller创建向导默认为我们创建一个继承自抽象类Controller的Controller类型,这样的Controller只能定义同步Action方法.如果我们需要定义异步Action方法,必须继承抽象类AsyncController.这篇问你讲述两种不同的异步Action的定义方法和底层执行原理. 一.基于线程池的请求处理 ASP.NET通过线程池的机制处理并发的HTTP请求.一个Web应用内部维护着一个线程池,当探测到抵达的针对本应用的请求时,会从池
-
详解Asp.Net MVC——控制器与动作(Controller And Action)
一.理解控制器 1.1.什么是控制器 控制器是包含必要的处理请求的.NET类,控制器的角色封装了应用程序逻辑,控制器主要是负责处理请求,实行对模型的操作,选择视图呈现给用户. 简单理解:实现了IController接口,修饰符必须是public,不能是抽象的,不能是泛型的,类名必须以Controller结尾. 在MVC框架中,控制器类必须实现System.Web.Mvc命名空间下的IController接口,如上图所示,这是一个非常简单的接口,该接口仅有一个Execute方法,当请求该控制器时E
-
使用ASP.NET MVC 4 Async Action+jQuery实现消息通知机制的实现代码
这两天在使用Asp.net MVC 4开发COMET消息通知机制,在后端使用异步线程对消息进行订阅,客户端通过AJAX长连接请求MVC中的ACTION,如:http://localhost/event/imageSet,即表示获取ImageSet对象的变更消息(新增,更新和删除消息). 1.事件消息的类IEventEntity<TEntity>类的定义 复制代码 代码如下: public interface IEntityEvent<TEntity> { //变
-
asp.net MVC利用ActionFilterAttribute过滤关键字的方法
本文实例讲述了asp.net MVC利用ActionFilterAttribute过滤关键字的方法.分享给大家供大家参考,具体如下: 在开发过程中,有时候会对用户输入进行过滤,以便保证平台的安全性.屏蔽的方法有很多种,但是今天我说的这种主要是利用MVC中的ActionFilterAttribute属性来实现.由于MVC天然支持AOP,所以我们这种过滤方式正好利用了MVC的这种特性. 下面请看步骤: 首先,当用户输入自己的名称的时候,带有类似<BR>的内容的时候,由于MVC默认是需要验证内容的,
-
解读ASP.NET 5 & MVC6系列教程(10):Controller与Action
我们知道在MVC5和之前的版本,两个框架的生命周期是不一样的,在新版MVC6中,MVC Controller/Web API Controller已经合二为一了,本章我们主要讲解Controller和Action的定义与使用,以及在MVC框架中,如何根据路由查询相应的Controller和Action. Controller&Action的定义和使用 在新版MVC6框架中,依然提供了一个Controller基类,在这里除了依然提供了Url.RouteData.HttpContext.Reques
-
ASP.NET MVC使用ActionFilterAttribute实现权限限制的方法(附demo源码下载)
本文实例讲述了ASP.NET MVC使用ActionFilterAttribute实现权限限制的方法.分享给大家供大家参考,具体如下: ActionFilterAttribute是Action过滤类,该属于会在执行一个action之前先执行.而ActionFilterAttribute是 MVC的一个专门处理action过滤的类.基于这个原理 我们做一个权限限制 例如:如何访问 HomeController 里的test action using System; using System.C
-
ASP.NET MVC:Filter和Action的执行介绍
根据controller的名字正确的实例化了一个controller对象.回到MVCHandler的BeginProcessRequest方法,可以看到,当得到controller对象之后,首先判断它是不是IAsyncController,如果是则会创建委托用来异步执行.通常情况下,我们都是继承自Controller类,这不是一个IAsyncController,于是会直接执行Controller的Execute方法.Execute方法是在Controller的基类ControllerBase中
-
浅谈Asp.net Mvc之Action如何传多个参数的方法
最近,工作上有一个需要:用户查询日志文件信息,查看某一个具体日志信息,可能同时查看该日志所在日期的其他日志信息列表. 为完成此功能,我打算在URL中传入了两个参数,一个记录此日志时间,另外一个记录日志的主键ID,因此,准备从Asp.net MVC的路由入手. 在Global.asax文件中,默认路由如下. routes.MapRoute( "Default", // 路由名称 "{controller}/{action}/{id}", // 带有参数的 URL ne
-
浅谈ASP.NET MVC 防止跨站请求伪造(CSRF)攻击的实现方法
在HTTP POST请求中,我们多次在View和Controller中看下如下代码: 1.View中调用了Html.AntiForgeryToken(). 2.Controller中的方法添加了[ValidateAntiForgeryToken]注解. 这样看似一对的写法其实是为了避免引入跨站请求伪造(CSRF)攻击. 这种攻击形式大概在2001年才为人们所认知,2006年美国在线影片租赁网站Netflix爆出多个CSRF漏洞,2008年流行的视频网址YouTube受到CSRF攻击,同年墨西哥一
-
浅谈ASP.NET MVC应用程序的安全性
前言:保护Web应用程序的安全性看起来时间苦差事,这件必须要做的工作并不能带来太多的乐趣,但是为了回避尴尬的安全漏洞问题,程序的安全性通常还是不得不做的. 1.ASP.NET Web Forms开发人员 (1)因为ASP.NET MVC不像ASP.NET Web Forms那样提供了很多自动保护机制来保护页面不受恶意用户的攻击,所以阅读本博客来了解这方面的问题,更明确的说法是:ASP.NET Web Forms致力于使应用程序免受攻击.例如: 1)服务器组件对显示的值和特性进行HTML编码,以帮
-
浅谈ASP.NET Core静态文件处理源码探究
前言 静态文件(如 HTML.CSS.图像和 JavaScript)等是Web程序的重要组成部分.传统的ASP.NET项目一般都是部署在IIS上,IIS是一个功能非常强大的服务器平台,可以直接处理接收到的静态文件处理而不需要经过应用程序池处理,所以很多情况下对于静态文件的处理程序本身是无感知的.ASP.NET Core则不同,作为Server的Kestrel服务是宿主到程序上的,由宿主运行程序启动Server然后可以监听请求,所以通过程序我们直接可以处理静态文件相关.静态文件默认存储到项目的ww
-
浅谈ASP.NETCore统一处理404错误都有哪些方式
目录 方式一 方式二 自定义通配路由 方式三 方式四 方式五 web.config <customErrors> 节点中配置ASP.NET管道处理404错误 总结 当未找到网页并且应用程序返回 404 错误时,ASP.NET Core MVC 仅呈现通用浏览器错误页面,如下图所示 这不是很优雅,是吗?我们平时看到的404页面一般是这样的 还有这样的 试了下京东,地址不存在的时候是会重定向到首页 下面就来演示下ASP.NET Core中如何实现这种自定义的404页面处理. 新建项目 ASP.NE
-
浅谈ASP.NET Core 中jwt授权认证的流程原理
1,快速实现授权验证 什么是 JWT ?为什么要用 JWT ?JWT 的组成? 这些百度可以直接找到,这里不再赘述. 实际上,只需要知道 JWT 认证模式是使用一段 Token 作为认证依据的手段. 我们看一下 Postman 设置 Token 的位置. 那么,如何使用 C# 的 HttpClient 访问一个 JWT 认证的 WebAPI 呢? 下面来创建一个 ASP.NET Core 项目,尝试添加 JWT 验证功能. 1.1 添加 JWT 服务配置 在 Startup.cs 的 Confi
-
asp.net mvc 实现文件上传带进度条的思路与方法
前言 文件上传与下载的操作在实际项目中经常是很重要的一个内容,在使用ASP.NET Web Form的时候我们可以使用诸多的服务器控件,FileIpload就是其中之一,但是在ASP.NET不建议使用那些服务器控件,因为那样违反三层架构原则.最近参考网络资料,学习了ASP.NET MVC如何上传文件. 而这篇文章主要重点是asp.net mvc 实现文件上传带进度条,下面来一起看看吧. 实现思路 ajax异步上传文件,且开始上传文件的时候启动轮询来实时获取文件上传进度.保存进度我采用的是memc
-
浅谈struts1 & jquery form 文件异步上传
1.概述 还在用struts1?是的,在地球的没写地方,落后的生产方式还在运转(老项目). 从 继承org.apache.struts.action.Action, 继承org.apache.struts.action.ActionForm开始吧 2. 代码 2.1 html页面 <html> <head> <title>网页上传</title> </head> <body> <center> <h1>本地文件
-
ASP.NET MVC使用JCrop上传并裁剪图片
JCrop用来裁剪图片,本篇想体验的是: 在视图页上传图片: 上传成功,跳转到另外一个编辑视图页,使用JCrop对该图片裁剪,并保存图片到指定文件夹: 裁剪成功后,在主视图页显示裁剪图片: 当然,实际项目中最有可能的做法是:在本页上传.裁剪并保存. 思路 在上传图片视图页,把图片上传保存到一个临时文件夹Upload 在编辑裁剪视图页,点击"裁剪"按钮,把JCrop能提供的参数,比如宽度.高度.离顶部距离,离底部距离,离左右端距离等封装成类,传递给控制器方法 控制器方法根据接收到的参数,
-
浅谈mybatis中的#和$的区别 以及防止sql注入的方法
mybatis中的#和$的区别 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id". 2. $将传入的数据直接显示生成在sql中.如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的
随机推荐
- iOS中Navbar设置渐变色效果的方法示例
- ruby实现的文件自删除代码分享
- 详解Ubuntu下配置samba实现文件夹共享
- 基于hibernate实现的分页技术实例分析
- linux下配置和安装KVM虚拟机的步骤
- ES6中非常实用的新特性介绍
- php中字符串和正则表达式详解
- Python 3.x 新特性及10大变化
- 用实例说明python的*args和**kwargs用法
- python数据结构之链表的实例讲解
- ASP编程入门进阶(十八):FSO组件之文件操作(上)
- php下使用无限生命期Session的方法
- 对Web开发中前端框架与前端类库的一些思考
- VC++植物大战僵尸中文版修改器实现代码
- JS打开层/关闭层/移动层动画效果的实例代码
- WPF换肤设计原理浅析
- Spring+EHcache缓存实例详解
- Android ScrollView嵌套ExpandableListView显示不正常的问题的解决办法
- Linux下必须要学的系统安全命令第1/4页
- 浅谈Postman解决token传参的问题