2016-03-02 3 views
0

Оки, я пытаюсь закончить dispkay продукта для клиента, в моем коде у меня есть этотПользовательские MVC маршрутизации

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

Который дает мне ссылку (URL) продукции/Категории, что теперь делать я необходимо достичь моей конечной цели (например) Продукты/Браслеты. Должен ли я писать пользовательский маршрут, если это может кто-то показать мне пример, я все еще пытаюсь обдумать это.

** EDIT * я могу предоставить больше кода, если это необходимо :)

+0

Какой версии MVC вы используете? – danludwig

+0

MVC Version 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. Если вы делаете это таким образом, вам не нужен атрибут [Route] на методе действия:

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

Я предпочитаю первый подход атрибута, поскольку он сохраняет маршруты ближе к контроллерам & действия, которые они отображают в. Но оба достигнут того же.

Для того, чтобы сделать ссылку на этот маршрут от точки зрения, вы бы пройти в categoryName к методу HTML-помощник ActionLink:

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

от 'Braceletsss' до' девяти миллиметровых пистолетов', идеальное решение для конца! :) – Pogrindis

+0

Извините, я делал покупки, отвечая на вопрос. Не нужны браслеты. – danludwig

+0

@danludwig Как его использовать пользовательский htmlhelper? Просто бросая идею –

Смежные вопросы