Mvc 3 Как сохранить маршрут в классе?

#c# #asp.net-mvc-3 #routing

#c# #asp.net-mvc-3 #маршруты

Вопрос:

Каков наилучший способ сохранить маршрут в соответствии со всеми хорошими шаблонами?

У нас есть класс, который возвращает список с пунктами меню. Затем эти пункты отображаются в главном меню. Как только вы наводите курсор на элемент в меню, выполняется вызов ajax. Это означает, что я должен сохранить путь и параметры для этого вызова в пункте меню. Каков наилучший способ хранения этой информации? Я думал о RouteValueDictionary, но как я могу преобразовать один из них в полностью функционирующий маршрут?

Мы используем Mvc 3 и C #.

Ответ №1:

Это может сработать для вас:

 public class MenuItem
{
    public string Name { get; set; }

    public RouteValueDictionary RouteValues
    {
        get
        {
            return new RouteValueDictionary(
                new {
                    controller = "Pages",
                    action = this.Name
                });
        }
    }
}
  

На ваш взгляд, вы могли бы сделать что-то вроде этого:

 <ul>
    @foreach (var menuItem in Model.MenuItems)
    {
        <li>@Html.RouteLink(menuItem.Name, menuItem.RouteValues)</li>
    }
</ul>
  

Если все, что вам нужно, это путь, вы можете сделать это:

@Url.RouteUrl(menuItem.RouteValues)

Комментарии:

1. Этот @Url.RouteUrl(элемент меню. routeValues) сработал как чудо. Теперь я могу просто указать все в routevaluedictionary и избавиться от этого элемента меню. Имя (см. выше).

Ответ №2:

Почему бы не использовать UrlHelper.Действие для генерации URL, когда вам это нужно?

Ответ №3:

Используйте класс UrlHelper для создания ссылок и последующего их сохранения. Это намного гибче