簡體   English   中英

ASP.NET MVC Html.ActionLink結果URL - 編碼方式

[英]ASP.NET MVC Html.ActionLink result URL - the way of encoding

我在MVC控制器中創建了大量的動作。

public ActionResult DoSmth1(string token)
public ActionResult DoAnother2(string token)

當我必須調用ActionLink時..

=Html.ActionLink<SomeController>( x=> x.DoSmth(item.property), item.property)
=Html.ActionLink<AnotherController>( x=> x.DoAnother(item.property), item.property)

...它會生成不同的網址:

/Some/DoSmth/stringvalue
/Another/DoAnother?property=stringvalue

在哪里設置構建URL的方式? 我也沒有想法...((


好的,有一點方法: - 如果屬性名稱與路由模式中使用的相同 - 例如controller,action和id - MVC將始終使用路由構建器(/ c / a / id)。

這有點幫助(所以 - 盡可能將參數命名為“id” ))

但整體問題仍然有效......


必須與路徑中的令牌命名相同

確切地說 - 我第一次有這個想法。

但是 - 現在我只有默認路由({controller} / {action} / {id})但是仍然在斜杠中有“屬性”的URL ...這很奇怪。

  • 還有一種騙子的方式 - 創建一個精確的路線,匹配給定的控制器與它的參數名稱 - 似乎將是最終的答案 - 但我仍然不想這樣做((

您沒有顯示您的路線,但在此示例中您幾乎肯定會遇到不同的路線。 您的操作的參數必須與路由中的標記相同,以便生成的URL將路由標記與ActionLink的lambda形式匹配。 與路由令牌不匹配的任何內容都將作為查詢字符串參數附加,與第二個URL一樣。 查看查詢字符串參數強有力地證明您隱式傳遞的名稱(在本例中為“property”)與路由令牌不匹配。 由於您使用相同的令牌名稱獲得不同的結果,因此我得出結論您正在使用不同的路由。 順便提一下,我建議使用RouteLink而不是ActionLink構建鏈接,這樣您就可以確定要匹配的路由。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM