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://pan.baidu.com/s/1KZE4gcdTBWmMcZMYwhiBvg


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM