mvc 生成輸出url

2022-03-25 12:28:18 字數 2309 閱讀 6530

最近一直在學習mvc,其中對於 url.action生成的url感到很困惑。官方的解釋的基於路由方案生成的url。問題是,怎樣基於,怎樣選擇,沒有過多的解釋。網上找了很多資料,也看不懂,最後還是在pro asp.net mvc3 framework這本書看明白了。

我的路由方案是這樣的

1

public

static

void

registerroutes(routecollection routes)

2.axd/");

45routes.maproute6(

7null,8

"",9new ,

10new

11);

1213

routes.maproute14(

15null,16

"page",

17new ,

18new

19);

2021

routes.maproute22(

23null,24

"",25

new

2627

);28

29routes.maproute30(

31null,32

"/page",

33new ,

34new

35);

3637

routes.maproute(

38 name: null

,39 url: "//"

,40 defaults: new

41);

4243

4445 }

路由方案

這是我需要輸出的設定

1

class="

pager

">

2 @html.paginglinks(model.paginginfo, x => url.action("

list

", new ))

3

view code

請各位注意傳入的匿名型別的那幾個屬性

new )

)最終它匹配

routes.maproute

(null,

"/page",

new ,

new

);這條路由,生成的url就像是這樣

http://localhost:2154/球類/page2

接下來就是要解釋為什麼會這樣呢。

生成url的原則(對書的總結哈),我自己的總結是:

1、明個片段名必須都得到匹配(有預設值的,而你提供的匿名引數可以沒有該變數)例如

routes.maproute(

name: null,

url: "//",

defaults: new

);這條路由你只需提供new就能匹配到了

2、如果片段名滿足了,那唯讀預設量要麼沒有,要麼必須一模一樣,例如

routes.maproute

(null,

"",new

那麼當你提供的匿名引數的時候,page引數要麼沒有,有的話必須是1,否則直接不匹配,哪怕你已經匹配了category這個片段量

3、基於路由方案生成的url不是以最佳路由生成,而是以最先找到生成,例如:

1

routes.maproute(

2 name: "

fist",

3 url: "//"

,4 defaults: new 5);

6routes.maproute7(

8"second",

9"/page",

10new ,

11new

12 );

view code

我把first這條路由提前了,那麼我得到的結果是:

http://localhost:2154/?category=球類&page=2

為什麼會得到這個結果呢?

這是因為它先匹配是fist這條路由,它滿足/和片段量,並且id是可有可無所以,直接匹配它,直接放回,剩下的引數category和page以?查詢字串出現。所以越具體的路由應該放在前面,越抽象的應該放到後面

4,符合各種約束,例如正規表示式什麼的。

以上就是我對mvc生成url的理解,@html.actionlink方法也是一樣的。

第一次寫部落格請見諒哈。

反向生成url

一.常規的url系統 return httpresponse 進入index def text requext return httpresponse 進入text urlpatterns url r admin admin.site.urls url r index index url r tex...

mvc中獲取url傳參

如果url是 home index?id 3 直接request就ok。但是如果路由設定為 url是 home index 3 這時想在頁面view中獲取引數id的值,該怎麼獲取?查了下資料好多人都利用action獲取到引數值後,用viewdata傳到view中 例如controlers中的phon...

4 用MVC實現URL路由

用mvc實現url路由 原文 1.介紹 mvc框架使用url路由將url對映到控制器類及action方法。url路由自動解析url中的變數,並將他們作為引數傳遞給action方法。2.預設路由 mvc提供了一些預設url路由設定,將url以簡單的方式對映到控制器和action方法。3.對映url到控...