0

,所以我有我的行動MVC ActionLink的參數改變路線網址

<% foreach (var item in Model) { %> 
    <% Html.ActionLink (item.Name, "Profile", new { id = item.Id })%> 
<% } %> 

它產生這個URL,(如果item.Id爲1)的ActionLink的行:

http://localhost:1111/company/profile/1 

是有可能產生url /路由爲(基本上使用item.Name而不是Id:

http://localhost:1111/company/profile/nameofcompany1 

不是很確定如何處理以處理r outing這..如果我應該更改控制器的global.asax路由。

想法是受歡迎的。

謝謝!

-G

+0

您是否正在尋找像stackoverflow的鏈接,即'http:// localhost:1111/company/profile/1/mycompanyname'的鏈接?如果是這樣,那麼需要一個不同的解決方案。 – counsellorben

回答

2

肯定的:

<% Html.ActionLink (item.Name, "Profile", new { name = item.Name })%> 

現在,當然前提是你修改你的路由定義和name更換id令牌並且還通過name更換id動作參數在你的控制器動作。

這就是說,這種URL的有用性似乎相當受限於我。如果你有兩個同名的物品會怎麼樣?我會建議你總是使用ID來以獨特的方式識別你的物品。如果你想在這個url中有很多名字,舉個例子,如何在StackOverflow上實現url:他們使用問題id,並附加一個slug(不是名稱,它是一個過濾的名字,因爲事情可能會很快失去控制如果你的名字包含一些特殊字符)。

+0

我嘗試避免item.Name出於同樣的原因你說(重複的名稱和特殊字符),是的,這就是我要去的地方。我在想,堅持使用id,然後在路由上添加一個slug來顯示名稱。只是想知道是否有一種方法可以使用id來生成url,但會顯示名稱。我想即時通訊使得它太複雜,使用戶太容易.. – gdubs