MVC教程二:从控制器中获取URL的值
一、从控制器中获取URL的值有三种方式:
1、使用Request.QueryString[]
例如:
string value = Request.QueryString["BookId"].ToString();
注意:Request.QueryString只能获取URL中以?分割的参数值。
案例演示:
action方法代码如下:
#region 1、通过Request.QueryString的方式获取URL的值
public ActionResult Index()
{
// 获取路由数据
if (Request.QueryString["BookId"] != null)
{
string value = Request.QueryString["BookId"].ToString();
ViewData["msg"] = value;
}
return View();
}
#endregion
在前端页面添加一个P标签,用来输出BookId的值:
<p style="color:red;font-weight:bold">、通过Request.QueryString获取URL的值:@ViewData["msg"]</p>
运行结果
URL里面没有BookId参数时的结果:

URL里面有Bookid参数时的结果:

注意:URL里面的参数不区分大小写。
http://localhost:47723/Home/Index?BookId=4546
http://localhost:47723/Home/Index?BookID=4546
http://localhost:47723/Home/Index?bookid=4546
上面的几种URL都可以获取到BooId参数的值(这里只是列举了几种,其他形式的BookId也可以获取到)。
2、使用RouteData.Values
例如:
string paraDatas = string.Format("controller={0} action={1} id={2}", RouteData.Values["controller"].ToString(),
RouteData.Values["action"].ToString(), RouteData.Values["id"]);
注意:RouteData.Values["id"]就是当前字典上的路由数据,通过访问键名的方式得到键值,比如URL模式匹配的字符串是ID,则key的值必须是id。
案例演示
action方法代码如下:
public ActionResult Index()
{
// 获取路由数据
string paraDatas = string.Format("controller={0} action={1} id={2}", RouteData.Values["controller"].ToString(),
RouteData.Values["action"].ToString(), RouteData.Values["id"]);
ViewData["msg"] = paraDatas;
return View();
}
在前端页面添加一个P标签,用来输出URL参数的值:
<p style="color:blue;font-weight:bold">、通过RouteData获取URL的值:@ViewData["msg"]</p>
运行结果:

3、使用action参数
public ActionResult Index(string controller, string action, int id)
{ }
注意:Action方法的参数和路由字典的参数是对应的,MVC框架在执行action方法前会首先为这些参数赋值。
案例演示
action方法代码如下:
public ActionResult Index(string controller, string action, int id)
{
// 获取路由数据
string paraDatas = string.Format("controller={0} action={1} id={2}", controller, action, id);
ViewData["msg"] = paraDatas;
return View();
}
注意:这时候需要修改路由注册,给id一个默认值,或者和第一种方式里面一样先判断id的值是否为null。否则会报下面的错误:

在这里给id一个默认值2
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing; namespace MVCUrlPara
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = } //给id默认值2
);
}
}
}
运行结果

示例代码下载地址:https://pan.baidu.com/s/1KZE4gcdTBWmMcZMYwhiBvg
MVC教程二:从控制器中获取URL的值的更多相关文章
- MVC 在控制器中获取某个视图动态的HTML代码
ASP.NET MVC 在控制器中获取某个视图动态的HTML代码 如果我们需要动态的用AJAX从服务器端获取HTML代码,拼接字符串是一种不好的方式,所以我们将HTML代码写在cshtml文件中, ...
- 记录一次bug解决过程:velocity中获取url中的参数
一.总结 在Webx的Velocity中获取url中参数:$rundata.getRequest().getParameter('userId') 在Webx项目中,防止CSRF攻击(Cross-si ...
- VUE中获取url中的值
如图:获取值 一:main.js中写入 const router = new VueRouter({ routes: [ { path: '/goodsinfo/:goodsId', componen ...
- js中获取URL中指定的查询字符串
js中获取URL中指定的搜索字符串,主要利用location对象实现,废话少说,上代码. function getSearchString(key) { // 获取URL中?之后的字符 var str ...
- 控制层方法中获取url目录
控制层方法中获取url目录 Request.Url.GetLeftPart(UriPartial.Authority).ToString(); //返回 http://localhost:9246(网 ...
- JAVA中获取文件MD5值的四种方法
JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...
- GridView控件RowDataBound事件中获取列字段值的几种途径
前台: <asp:TemplateField HeaderText="充值总额|账号余额"> <ItemTemplate> <asp:Label ID ...
- asp 获取url 返回值 和 对json 返回值的处理
Function GetHttpPage(HttpUrl,endoce) If endoce = "" Then endoce = "GB2312" If Is ...
- 使用 JavaScript 在下拉列表中获取选定的值
使用 JavaScript 在下拉列表中获取选定的值 演示Demo 使用 JavaScript 在下拉列表中获取选定的值? <!DOCTYPE html> <html> < ...
随机推荐
- WCF 的 WebGet 方式
.NET 3.5以后,WCF中提供了WebGet的方式,允许通过url的形式进行Web 服务的访问.在以前的代码中,写过多次类似的例子,但总是忘记如何配置,现在将设置步骤记录如下: endpoint通 ...
- 【php】基础学习2
主要包括数组的学习,具体如下: <html xmlns=http://www.w3.org/1999/xhtml> <head> <meta http-equiv=Con ...
- python学习笔记——高阶函数map()
满足以下两点中任意一点,即为高阶函数: 1.函数接收一个或多个函数作为参数 2.函数返回一个函数 1 描述 用函数和可迭代对象中每一个元素作为参数,计算出新的迭代对象 map() 会根据提供的函数对指 ...
- AP_自动付款工作台设定和操作(流程)
2014-06-04 Created By BaoXinjian
- Mysql multi实现mysql双实例
Mysql multi实现mysql双实例 1.添加mysql用户 以root登录,新建mysql用户组 groupadd mysql useradd -d /data/mariadb -g mysq ...
- 给 Android 开发人员的 RxJava 具体解释
鉴于 RxJava 眼下这样的既火爆又神奇的现状,而我又在一年的使用过程中对 RxJava 有了一些理解,我决定写下这篇文章来对 RxJava 做一个相对具体的.针对 Android 开发人员的介绍. ...
- Let's call it a "return"
Preface Long time no see. For some reason that I failed to keep updating this blog, which is really ...
- js获取当前页面url网址等信息
使用js获取当前页面的url网址信息. 1.设置或获取整个 URL 为字符串: window.location.href 2.设置或获取与 URL 关联的端口号码: window.location.p ...
- 在windows下codeblocks中配置pthread库
转自:http://blog.csdn.net/u013172314/article/details/50846198 如果添加方法不正确,可能会出现pthread_create’未定义的引用,所以下 ...
- CCProgressTo和CCProgressTimer
在cocos2d中同样提供了很多表现图片和精灵的方式,上一篇当中提到的切换场景的方式之一是顺或逆时针切入的方法,在图片上也可以使用,test里有一个例子介绍CCProgressTimer可以实现一些图 ...