2016-03-02 55 views
0

Okie,我試圖完成一個產品dispkay爲客戶,在我的代碼我有這個定製MVC路由

@foreach (var item in Model) 
{ 
    <div class="itemcontainer"> 
     <p class="button">@Html.ActionLink(item.Category, item.Category) (@item.Count)</p> 
    </div> 
} 

這使我的產品/分類鏈接(URL),現在應該做些什麼需要達到我(例如)產品/手鐲的最終目標。我是否必須編寫自定義路線,如果有的話,是否有人可以給我一個例子,我仍然試圖讓我的頭在這附近。

**編輯* 如果它的需要,我可以提供更多的代碼:)以上

+0

MVC哪個版本您使用的? – danludwig

+0

MVC版本6.0 – PsychoCoder

回答

1
[HttpGet, Route("products/{categoryName}")] 
public IActionResult GetProductsByCategoryName(string categoryName) { 
    ... code to retrieve products by category name 

是做這件事,我更喜歡至少的方式。當您訪問路線/products/nine-millimeter-handguns時,則在您的操作中,categoryName變量的值將爲nine-millimeter-handguns。然後,您可以使用該字符串值查找該類別中的所有產品並將其返回給客戶端。

另一種方法是在Startup.cs的全局路由配置中。因爲它使航線更接近控制器&行動,他們映射到

public void Configure(IApplicationBuilder app) { 
    ... 
    app.UseMvc(routes => { 
     routes.MapRoute(null, "products/{categoryName}", new { 
      controller = "Products", action = "GetProductsByCategoryName" 
     }); 
    }); 
} 

我更喜歡前者屬性的方法:如果你這樣說,你不需要在操作方法的[Route]屬性。但兩者都會完成同樣的事情。

爲了呈現一個鏈接從視圖這條路線,你會通過在categoryName到ActionLink的HTML輔助方法:

@Html.ActionLink(item.Category, item.Category, new { 
    categoryName = "nine-millimeter-handguns" 
}) 
+1

從'Braceletsss'到'9毫米手槍',一個完美的端到端解決方案! :) – Pogrindis

+0

對不起,我在回答問題的同時購物。不需要任何手鐲。 – danludwig

+0

@danludwig他如何使用自定義的htmlhelper?只是拋出一個想法 –