日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

ASP.NET?MVC從控制器中獲取URL值_實用技巧

作者:.NET開發菜鳥 ? 更新時間: 2022-05-08 編程語言

從控制器中獲取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的值:

1、通過Request.QueryString獲取URL的值:@ViewData["msg"]

運行結果

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參數的值:

2、通過RouteData獲取URL的值:@ViewData["msg"]

運行結果:

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

相關推薦

欄目分類
最近更新