[英]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.