У меня есть область я назвал форумы, сейчас, в списке Тема страницы, у меня есть нить ссылки, которые генерируются так:ASP MVC - прослушивание маршрутов?
@Html.ActionLink(title, "Thread", "Forums", new { category = item.CategoryName, item = item.Id, page = 0 }, null)
Теперь, когда я открываю нить, и я хочу, чтобы получить ссылка на текущем потоке внутри потока, я это делаю (в потоке):
@Html.ActionLink(title, "Thread", "Forums", new { category = Model.Post.CategoryName, item = Model.Post.ThreadId, page = Model.Page }, null)
Обе нити список страниц и страницах находятся в одной и той же области. Теперь посмотрим на обоих actionlinks вместе:
1. @Html.ActionLink(title, "Thread", "Forums", new { category = Model.Post.CategoryName, item = Model.Post.ThreadId, page = Model.Page }, null)
2. @Html.ActionLink(title, "Thread", "Forums", new { category = item.CategoryName, item = item.Id, page = 0 }, null)
Эти два actionlinks практически одинаковы (Model
содержит действительные данные, я проверил), но они генерируют разные ссылки:
первый:
http://localhost:11227/Forums/Thread/1?category=Kosz&page=0
второй один:
http://localhost:11227/Forums/Thread/Kosz/1/0
Второй генерирует правильную ссылку, в то время как первый ... Я понятия не имею, что делает первый. Только Разница между ними - это место, где они выполняются, как я уже говорил выше, кулак выполняется в потоке, второй выполняется на странице списка нитей.
Что я могу сделать, чтобы исправить эту первую ссылку?
UPDATE: Добавлен маршрут:
context.MapRoute(
"Forums_thread",
"Forums/{action}/{category}/{item}/{page}",
new { controller = "Forums", page = UrlParameter.Optional }
);
Второе обновление Я думаю, что я действительно нашел ошибку? Благодаря ответу Eilon, я узнал, что это:
@Html.ActionLink("something", "Thread", "Forums", new { category = "Kosz", item = Model.Post.ThreadId, page = Model.Page }, null)
создает правильную ссылку, а это:
@Html.ActionLink("something", "Thread", "Forums", new { category = Model.Post.CategoryName, item = Model.Post.ThreadId, page = Model.Page }, null)
генерирует некорректная ссылка (Model.Post.CategoryName
еще "Kosz"
, хотя)! Я понятия не имею, что происходит ...
Какие маршруты делают у вас есть, и что, ограничения у них есть? Кроме того, если вы выполняете * точный * тот же вызов на Html.ActionLink на каждом сайте, вы получаете те же результаты? – Eilon
@Eilon: Я обновил сообщение своим маршрутом, это первый маршрут в моем списке маршрутов, поэтому с указанными параметрами в actionlinks он должен ударяться каждый раз. И, хм ... Ваш ответ дал мне что-то, я попробовал называть точный actionlink, и это дало мне тот же результат на обоих сайтах. Oo Gonna попытается сделать sth с этим сейчас ... – ojek
вы можете попробовать '@ Html.ActionLink (« что-то »,« Тема »,« Форумы », new {category = Model.Post.CategoryName.ToString(), item = Model.Post.ThreadId, page = Model.Page}, null) 'таким образом будет гарантировано, что' Model.Post> CategoryName' не является нулевым – dakait