一、从控制器中获取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的值的更多相关文章

  1. MVC 在控制器中获取某个视图动态的HTML代码

    ASP.NET MVC 在控制器中获取某个视图动态的HTML代码   如果我们需要动态的用AJAX从服务器端获取HTML代码,拼接字符串是一种不好的方式,所以我们将HTML代码写在cshtml文件中, ...

  2. 记录一次bug解决过程:velocity中获取url中的参数

    一.总结 在Webx的Velocity中获取url中参数:$rundata.getRequest().getParameter('userId') 在Webx项目中,防止CSRF攻击(Cross-si ...

  3. VUE中获取url中的值

    如图:获取值 一:main.js中写入 const router = new VueRouter({ routes: [ { path: '/goodsinfo/:goodsId', componen ...

  4. js中获取URL中指定的查询字符串

    js中获取URL中指定的搜索字符串,主要利用location对象实现,废话少说,上代码. function getSearchString(key) { // 获取URL中?之后的字符 var str ...

  5. 控制层方法中获取url目录

    控制层方法中获取url目录 Request.Url.GetLeftPart(UriPartial.Authority).ToString(); //返回 http://localhost:9246(网 ...

  6. JAVA中获取文件MD5值的四种方法

    JAVA中获取文件MD5值的四种方法其实都很类似,因为核心都是通过JAVA自带的MessageDigest类来实现.获取文件MD5值主要分为三个步骤,第一步获取文件的byte信息,第二步通过Messa ...

  7. GridView控件RowDataBound事件中获取列字段值的几种途径

    前台: <asp:TemplateField HeaderText="充值总额|账号余额"> <ItemTemplate> <asp:Label ID ...

  8. asp 获取url 返回值 和 对json 返回值的处理

    Function GetHttpPage(HttpUrl,endoce) If endoce = "" Then endoce = "GB2312" If Is ...

  9. 使用 JavaScript 在下拉列表中获取选定的值

    使用 JavaScript 在下拉列表中获取选定的值 演示Demo 使用 JavaScript 在下拉列表中获取选定的值? <!DOCTYPE html> <html> < ...

随机推荐

  1. python学习笔记011——内置函数filter()

    1 描述 filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表. 2 语法 filter(function, iterable) function -- 函数,过 ...

  2. 基于UDP协议的网络程序

    一.下图是典型的UDP客户端/服务器通讯过程 下面依照通信流程,我们来实现一个UDP回射客户/服务器 #include <sys/types.h>  #include <sys/so ...

  3. 【服务器防护】linux 如何查看防火墙是否开启

    service iptables status可以查看到iptables服务的当前状态.但是即使服务运行了,防火墙也不一定起作用,你还得看防火墙规则的设置 iptables -L在此说一下关于启动和关 ...

  4. Java的Statement、PreparedStatement、PreparedStatement + 批处理 的区别

    首先来说一下连接了数据库之后执行的sql语句:通常连接了数据库之后,我们就会获得statement 类的对象或者是他的子类的对象(PreparedStatement类),通过这个对象我们就可以利用它提 ...

  5. 豌豆荚不能连接三星S4手机,提示打开手机的“USB调试模式”,但却找不到在哪儿可以设置

    1. 问题 豌豆荚不能连接三星S4手机,下载了三星S4手机的驱动后,提示打开手机的“USB调试模式”,但却找不到在哪儿可以设置. 2. 原因 S4 默认隐藏开发者选项,所以默认不可以设置“USB调试模 ...

  6. Shiro整合SSH开发3:配置Shiro认证后页面地址跳转问题(和详述不配置须要注意的问题)

         在视频教程中讲请求认证成功后跳转页面的问题是一笔带过的,可是我认为有必要单独写一篇相应的文章进行叙述.      我用了SSH来整合Shiro,在开发后验证的过程中,每次登陆后Shiro都会 ...

  7. TinyXml 操作XML 常用操作

    源代码下载:http://sourceforge.net/projects/tinyxml/files/ 如下是一个XML片段:    <Persons>        <Perso ...

  8. git将远程仓库最新版本拉到本地仓库

    一.正规做法有两种.git fetch和git pull. 注意不管用fetch还是pull,做之前都要在本地仓库做一次git commit,确保,本地仓库和工作目录及缓存一致.1.git fetch ...

  9. jQuery 复选框全选/取消全选/反选

    jQuery实现的复选框全选/取消全选/反选及获得选择的值. 完整代码: <!DOCTYPE html> <html> <head> <script type ...

  10. PHP二维数组如何根据某个字段排序

    分享下PHP二维数组如何根据某个字段排序的方法. 从两个不同的表中获取各自的4条数据,然后整合(array_merge)成一个数组,再根据数据的创建时间降序排序取前4条. 本文记录的要实现的功能类似于 ...