欢迎来到代码驿站!

.NET代码

当前位置:首页 > 软件编程 > .NET代码

ASP.NET MVC从控制器中获取URL值

时间:2023-02-02 10:12:50|栏目:.NET代码|点击:

从控制器中获取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
            );
        }
    }
}

运行结果

示例代码下载地址:点此下载

上一篇:ASP.NET Core中引用OpenAPI服务的添加示例

栏    目:.NET代码

下一篇:C#如何绑定多个按钮到同一个事件

本文标题:ASP.NET MVC从控制器中获取URL值

本文地址:http://www.codeinn.net/misctech/224930.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有