ASP.NET MVC从控制器中获取URL值
作者:.NET开发菜鸟 发布时间:2023-07-09 18:30:08
标签:ASP.NET,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">1、通过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">2、通过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 = 2 } //给id默认值2
);
}
}
}
运行结果
示例代码下载地址:点此下载
来源:https://www.cnblogs.com/dotnet261010/p/8849895.html
0
投稿
猜你喜欢
- 阻塞定义当来自应用程序的第一个连接控制锁而第二个连接需要相冲突的锁类型时,将发生阻塞。其结果是强制第二个连接等待,而在第一个连接上阻塞。不管
- 这是写给web设计者和前端开发者的教程,我们将演示如何使用Photoshop创建按钮的sprite图,然后是如何使用jQurey打造动态渐变
- 对设计“以人为本”和“绿色设计”两个观点的反思——兼与设计界同仁商榷Reflection of Two Views: “People-ori
- 曾有位网友遇到这样一个问题:产品名称为“A&T Plastic”,在产品列表中需要做这样的超链接,<a href="
- 天极网软件频道的图片切换特效,完全是由XHTML+CSS+JS实现的图片切换特效,弄了好半天啊!!如果您使用或者转载请别忘了加我的一个连接啊
- 在我们武汉的一个项目中,用户提供的数据库服务器有16G左右的内存,但我们只能使用8G多的内存,为了提高内存的得用率,特意参考了一些资料,得出
- 编者注:当讲到了性能优化和案例方面的东西,就要想到如何从开发人员的角度进行了理解,认识SQL是如何执行,以及如何学习高级的SQL,这篇文章对
- 昨天看到设计师提供的一张有关多个设计师角色间的漫画图(如下图),着实感到有点讽刺。现在的设计还只是停留在“盲人摸象”的阶段,为什么会这样?在
- sysdate+(5/24/60/60) 在系统时间基础上延迟5秒 sysdate+5/24/60 在系统时间基础上延迟5分钟 sysdat
- 我认为多选列表具有完美的功能——只需按下Ctrl键,同时点击鼠标从列表中选择多个项目。以下是一个典型的多选列表框: 上面那个列表框
- Css Reset是什么? 有些同行叫 "css复位",有些可能叫 "默认css".....相信看完
- 这个网页颜色表是很好用,鼠标点击颜色即可复制颜色值到剪贴板,方便大家设计取色。下载苏昱css2 样式表中文手册包括颜色表:W3C- 十六色色
- 我们在工作中经常强调沟通能力,和产品、开发、测试等不同角色的人需要沟通,和领导、同事需要沟通,沟通是一个双向的过程,而沟通首先需要双方有良好
- 今天淘到的,终于可以放心的使用IE7了,再也不用换回IE6做测试了!因为这个10M大小的软件已经包含了从IE3到IE6的版本,安装过程中可以
- 第一步一般是建立一个关键字替换表 如 id keyword url 等字段第二步是文章显示时把【文章】内容和【关键字替换表】对应的关键字替换
- 这是一种相对比较复杂的图表,但是仍然遵循上篇中提出的最基本的思路。本例中使用的定义列表标签dl可能平常我们见得不多,一般我们在做列表的时候通
- Acunetix Web Vulnerability Scanner 是一款国外产的及其优秀的扫描工具,可以帮忙挖掘网站内的诸多漏洞,包括常
- 最近在做一个魔术网的div+css切割,昨晚发现了长期以来一直无记录下来的问题!关于兼容IE跟FF的float属性。趁现在还清醒赶紧记下笔记
- oracle命令删除用户:connect / as sysdba; shutdown abort; startup;&n
- 代码如下:'************************************ '截取文字长度函数,支持UT