Итак, у меня возникла странная проблема с маршрутом в моем приложении. По какой-то причине это просто не будет соответствовать. Он выглядит как {controller}/Comments/Put
и имеет соответствующие ограничения, чтобы убедиться, что он попадает в правый контроллер, в данном случае «Misc». Когда я отправляю на маршрут, он просто не соответствует ...MVC 2 Проблема с маршрутами (ошибка?)
Я подключил библиотеку RouteDebugger, и в нем говорится: «Нет совпадения!», НО, когда я смотрю на таблицу маршрутов, тот, который выкапывает имеет зеленый «True» в колонке «Match», поэтому я немного проигрываю. Как он может совпадать и не совпадать в одно и то же время?
Я зашел так далеко, как закомментировал ВСЕ другие маршруты для приложения, и я все равно получаю тот же результат.
Когда-то это сработало, когда я сменил маршрут на что-то глупое долго, но потом я получил еще одну ошибку, в которой говорится, что я не могу отправить на мероприятие, потому что он был украшен [HttpPut]
, НО, я имел HttpMethodOverride как часть сообщения ... Во всяком случае, это еще одна глупая ошибка, которая даже не должна происходить, но опять же, что можно сказать обо всех ошибках.
Idk, если это имеет значение, оно не должно ..., но действие, которое нужно вызвать, является действием RedirectToRouteResult.
EDIT: Я также попытался положить маршрут на самом верху списка, так что получить никогда называют первым, до сих пор никаких изменений ...
Во всяком случае, если кто-то может указывать мне, почему маршрут неудачно, я был бы очень признателен!
Заранее благодарен!
EDIT 2: Чтобы прояснить немного больше, приложение предназначено для публикации коротких сообщений, а затем комментирования этих сообщений.
Публикация сообщения отлично работает через контроллер Ajax с маршрутом Ajax/Post/Put
, который соответствует {controller}/Post/Put
. Как вы можете заметить, маршруты очень похожи, но они не противоречат друг другу. Каждый маршрут имеет ограничение контроллера в виде controller = new ControllerConstraint("Ajax")
или controller = new ControllerConstraint("Misc")
.
EDIT 3: Чтобы уточнить немного больше раз, вот контроллер/действие, которое следует назвать и маршрут в Global.asax:
MiscController : BaseController {
[HttpPut, ValidateAntiForgeryToken]
public RedirectToRouteResult PutComment(
[Bind(Prefix = "Comment", Include = "Text")] Comment Comment) {
// Do stuff...
}
}
Routes.MapRoute("Misc (Put Comment)", "{controller}/Comments/Put", new {
action = "PutComment"
}, new {
controller = new ControllerConstraint("Misc")
});
EDIT 4: жесткого написания маршрут следующим образом не имеет никакого эффекта:
Routes.MapRoute("Misc (Put Comment)", "Misc/Comments/Put", new {
controller = "Misc",
action = "PutComment"
});
EDIT 5: я прошла и упрощенную все маршруты, не более Params в Ур l и больше ограничений. Таким образом, маршруты выглядеть следующим образом:
Routes.MapRoute("Misc (Comments)", "Misc/Comments", new {
controller = "Misc",
action = "Comments"
});
Итак, теперь, когда маршрут полностью жестко не должно быть никаких расхождений о не совпадающих маршрутов. Простой и простой ... или это ...
После того, как вы попробовали это, я работал, я теперь кричал на то, что POST не разрешен, что было правдой, потому что действие было украшено PUT, НО, переопределение Http передавалось по мере того, как должно было быть, но структура полностью игнорировала его (?).
Итак, продолжая, я решил повторить ту же попытку по почте, но на этот раз, позволяя отладчику маршрута дать мне следующее: Маршрут по-прежнему не соответствует, YET в таблице маршрутов, он указан зеленым цветом как соответствующий , ПРОТИВОРЕЧИЯ up a ** !!!
Итак, проглотив еще одну ошибку BS, я решил отключить любой другой маршрут, а также любой другой метод от всех других контроллеров.
Угадайте, что, я ВСЕ ЕЩЕ ЖЕ ЖЕ РЕЗУЛЬТАТЫ! Это похоже на то, что каркас полностью сходит с SUPER MEGA HERP-A-DE-DERP ...
Я очень расстроен. Я написал приложения с гораздо большей сложностью, чем этот простой пост/комментарий приложения и я никогда не столкнулся так много трудностей ...
Я просто не знаю больше ...
:: идет к углу, скручивается и начинает плакать ::
Если вы могли бы предоставить более подробную информацию о том, как вы добавили маршруты, мы могли бы помочь. вы говорите, что вы вызываете 'Misc/Comments/Put' или вы помещаете' {controller}/Comments/Put' в словарь сопоставлений маршрутов? если да, дайте нам несколько подробностей о том, как вы делитесь им с таблицей маршрутов. –
Я вызываю '/ Misc/Comments/Put' через сообщение формы, которое должно соответствовать'/{controller}/Comments/Put' с 'ControllerConstraint (« Misc »)'. Это не так. Другой аналогичный маршрут '/ Ajax/Posts/Put' работает отлично, а также имеет' ControllerConstraint («Ajax») ', так что они не конфликтуют. Надеюсь, что это поможет немного больше. – Gup3rSuR4c