У меня есть два одинаковых сео дружественные маршруты, идущие к различным контроллерам/действия:Дифференциация между MVC Маршруты
routes.MapRoute(
"Locations",
"{controller}/{locationId}/{location}",
new { controller = "Locations", action = "Location", location = UrlParameter.Optional },
new { locationId = @"\d+" }
);
routes.MapRoute(
"News",
"{controller}/{newsId}/{newsTitle}",
new { controller = "News", action = "NewsItem", newsTitle = UrlParameter.Optional },
new { newsId = @"\d+" }
);
Маршрут Новости возвращает 404 ошибку, и наоборот, если я поменять их местами. Я попытался добавить контроллер по умолчанию к каждому - это ничего не делало. Затем я попытался заменить {controller} на фактическое имя контроллера. Это генерируется
Согласованный маршрут не включает в себя контроллер «» значение маршрута, который требуется
сообщение об ошибке.
Вот ссылка для каждого:
@Html.ActionLink(x.newsTitle, "NewsItem", "News", new { newsId = x.newsID, newsTitle = x.newsTitle.ToSeoUrl() },null)
<a href="@Url.Action("Location", "Locations", new { locationId = "1", location = "my-place-name" }, null)"><i class="fa fa-map-marker fa-li red"></i>My Place Name</a>
Я установил его "путем переключения locationId и расположение элементов строки запроса. ОК, так что это работает, но я считаю, что это неправильное решение. Что делать, если у меня есть третье действие контроллера с аналогичной парой querystring?
Заключительная попытка была сделать маршрут более универсальным:
routes.MapRoute(
"SEO",
"{controller}/{Id}/{Title}",
new { Title = UrlParameter.Optional },
new { Id = @"\d+" }
);
Bu, то я не могу передать действие, и я вернусь к менее SEO дружественных URL.
В конце концов, я хотел бы закончить с:
- Расположение/locationId /-топоним моего
- Новости/NewSID/моя-новости-позиционного
I» m относительно новый для MVC, и я уверен, что мне не хватает чего-то фундаментального (или просто немого).
Fab все работает! Я попытался добавить имя контроллера явно в маршрут, но не добавил его в значения по умолчанию. Так близко, но пока. Спасибо... – ComfortablyNumb