一、从控制器中获取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. IE浏览器中,设置指定程序查看源文件

    第一步:     先按Ctrl+R,输入regedit进入注册表     依次找到 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explo ...

  2. android开发学习之ViewPager滑动事件讲解

    android ViewPager滑动事件讲解 今天在做项目的时候,由于要处理viewPager页面滑动的事件,所以对其进行了一个小小的研究: 首先ViewPager在处理滑动事件的时候要用到OnPa ...

  3. MySQL 获取子分类ID的所有父分类ID和Name的集合

    CREATE DEFINER=`sa`@`%` PROCEDURE `proc_Product_leimu_ParentIds`( IN pID INT ) BEGIN ) vars, product ...

  4. 怎样让VMware上的虚拟机ping通外网(图解教程)

    近期在实习项目中遇到一个问题. 因測试须要,本人在win7上安装VMWare后在启动两台ubuntuserver.两台主机的网络配置所有採用NAT方式实现连接. 之后一路畅通.主机ping通虚拟机和外 ...

  5. Cocos2d-x游戏移植到WP8之路 -- c++和c#交互

    Cocos2d-x是眼下最流行的手机游戏引擎之中的一个,开源.轻量.多平台等的诸多特性使得它被非常多国内外手游开发人员所喜爱. 利用Cocos2d-x来开发Windows Phone 8的游戏相同也是 ...

  6. JavaScript / Html 转 pdf、图片

    Javascript 将 HTML 页面生成 PDF html2canvas: https://github.com/niklasvh/html2canvas jsPDF: https://githu ...

  7. 在ubuntu中配置深度学习python图片分类实验环境

    1 安装numpy,scipy, matplotlib, sudo apt-get install python-numpy sudo apt-get install python-scipy sud ...

  8. CentOS7设置自定义开机启动,添加自定义系统服务

    Centos 系统服务脚本目录: /usr/lib/systemd/ 有系统(system)和用户(user)之分,如需要开机没有登陆情况下就能运行的程序,存在系统服务(system)里,即: lib ...

  9. jquery定时器的简单代码

    当收到消息的时候能够及时的刷新,显示收到消息的条数,下面与大分享下使用简单的代码实现jquery定时器 简单的代码实现jquery定时器. 今天,项目遇到一个消息的模块,在导航条最上面.想实现,当收到 ...

  10. Linux下adb的配置

    进入当前用户主目录 yongdaimi@ubuntu:~$ cd ~ 打开.bashrc文件 yongdaimi@ubuntu:~$ vi .bashrc 在文件末尾添加下列代码 export ADB ...