#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 для создания ссылок и последующего их сохранения. Это намного гибче