0

Возможно, я ошибаюсь, так как я нооб для .NET MVC, но есть способ вставить текущий url в качестве параметра в @ Html.Routelink?Вставить текущий URL-адрес в параметр @ Html.RouteLink, чтобы построить ссылку

Я передаю частичный вид на страницу, чтобы отобразить список подкатегорий, основанный на текущей категории.

Вот мой контроллер логика:

public PartialViewResult SubcategoryMenu(string category) 
    { 
     IEnumerable<string> subcategories = repository.Products 
      .Where(x => x.SubCategory.Category.CategoryName == category) 
      .Select(x => x.SubCategory.SubCategoryName) 
      .Distinct() 
      .OrderBy(x => x); 

     return PartialView(subcategories); 
    } 

Вот мой частичный вид, который я пытаюсь получить текущую категорию URL в:

@model IEnumerable<string> 
@foreach (var link in Model) 
    { 
     @Html.RouteLink(link, new 
      { 
       controller = "Product", 
       action = "List", 
       category = "INSERT CURRENT URL HERE", 
       subcategory = link, 
       page = 1 
      }, new { @class = "btn btn-block btn-default btn-lg" }) 
    } 

Когда страница отображается, все продукты и категории перечислены, нет проблем. Когда я нажимаю категорию, URL-адрес равен http://localhost/Category2, что и есть.

Выберите категорию, затем все связанные подкатегории отображаются в отдельном div на основе запроса linq в контроллере.

Однако, чтобы правильно отобразить продукты, URL-адрес, сгенерированный для зрения подкатегорию должна быть http://localhost/Category/Subcategory и независимо от того, как я Твик на @ Html.RouteLink или даже @ Html.ActionLink, все, что я могу получить не http://localhost/Subcategory Если я передать текст в @ Html.Routelink для controller = "something", который отобразит http://localhost/something/Subcategory, поэтому я пытался получить текущий URL-адрес, который соответствует требуемой категории, переданной в подкатегорию @ Html.Routelink без успеха.

Если есть способ вставить текущий URL-адрес в подкатегорию RouteLink, это решит мои проблемы. Если есть способ достижения или лучший способ сделать это, пожалуйста, помогите.

Спасибо всем!

ответ

0

RouteLink и ActionLink использовать RouteTable строить исходящие адреса, так что это RouteTable вам нужно изменить, чтобы настроить URL-адреса, а не конфигурации RouteLink.

Вы можете сделать это по-разному, но самый гибкий способ сделать URL-адреса, которые отключены от данных базы данных, - subclass RouteBase.