网络编程
位置:首页>> 网络编程>> ASP.NET>> ASP.NET MVC从控制器中获取URL值

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参数时的结果:

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

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

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

注意: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>

运行结果:

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

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。否则会报下面的错误:

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

在这里给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 MVC从控制器中获取URL值

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

来源:https://www.cnblogs.com/dotnet261010/p/8849895.html

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com