我很新的ASP.NET MVC和我工作過使用ASP.NET MVC 2ASP.NET MVC路由奇怪或意外行爲
對於所有場景的電子商務應用程序,默認路由工作正常。但我需要確定自己的URL規則如下圖所示:
- 的http://本地主機/ mvc2proj /產品
- 的http://本地主機/ mvc2proj /產品/產品名稱
對於本,我在默認路由上方定義了一條新路由:
routes.MapRoute(
"Products",
"Products/{productName}",
new { controller = "Products", action = "Index" }
);
當主頁顯示時,它工作正常。那就是當URL是http:// localhost/mvc2proj時,菜單標題「Products」的錨定標記的href屬性是「href =」mvc2proj/Products「Products」。
但是,當URL是http:// localhost/mvc2proj/products/productname時,菜單標題「Products」的錨定標記的href屬性也變爲href =「mvc2proj/Products/productName」 。只要單獨點擊產品類別,就不應更改菜單href。它應該保持不變。
我定義的菜單爲用戶控制像這樣:
<li><%=Html.RouteLink("Home", new { Controller = "Main", Action = "Index" })%></li>
<li><%=Html.RouteLink("Products", new{ Controller = "Products" }) %></li>
產品的子類別的定義如下:
<%foreach(var product in Model.Products) {%>
<li><%=Html.RouteLink(Html.Encode(product.ProductName), new { controller = "Products", productName = product.ProductName })%></li>
<%} %>
的HTML子類別是:
<li><a href="/mvc2proj/Products/Product1">Product1</a></li>
<li><a href="/mvc2proj/Products/product2">Product2</a></li>
.. ..... 等等。點擊這些鏈接可以改變菜單的URL。
請幫幫我。
感謝我的朋友。我已經實施了類似於您所提議的解決方案。但是現在,該URL看起來像http:// localhost/mvc2proj/products?productName = prod_name而不是http:// localhost/mvc2proj/products/prod_name。 有沒有解決方法? 最好的問候, Vikas Anand – user423719 2010-08-18 10:21:43
這是因爲它在{productName}之前找到「ProductsIndex」路徑 - 嘗試先放置{productName},然後在轉到索引路由時不傳入產品名稱。確保你的Html.RouteLinks也指向正確的路線。 很高興有一點幫助,不要忘了接受答案,如果它解決了它;)(無恥的在那裏釣魚!) – randomsequence 2010-08-18 10:48:29
你能用一個例子來解釋嗎?我對ASP.NET MVC很陌生。 :( – user423719 2010-08-18 11:54:37