#c# #asp.net-mvc #asp.net-mvc-5
#c# #asp.net-mvc #asp.net-mvc-5
Вопрос:
Я пытаюсь использовать
RedirectToAction("Index", new {id = "some_id"});
но вместо этого он создает URL Index/some_id
Index?id=some_id
-адрес, который мне нужен. Как это исправить?
PS Я пытался вызвать RedirectToAction("Index?id=some_id");
, но это не работает.
P.P.S. Я решаю, что это очень легко сделать. Но я новичок в ASP.Чистый и не могу найти как.
Комментарии:
1. Это из-за конфигурации маршрутизации по умолчанию
{controller}/{action}/{id}
.2. Вы используете маршрутизацию по умолчанию. Если вам нужна строка запроса вместо значения маршрута, измените имя параметра, чтобы оно не соответствовало маршруту по умолчанию (но не ясно, зачем вам это нужно)
3. И как мне нужно это переписать?
4. Я этого не знал. Спасибо за объяснение!
Ответ №1:
В случае, если вам нужно маршрутизировать «{controller} / {action}» в вашей конфигурации маршрута, вы можете использовать public ActionResult Index (string id) в качестве вашего метода контроллера.
routes.MapRoute(
"Default", // Route name
"{controller}/{action}", // URL with parameters
new { controller = "Home", action = "Index"} // Parameter defaults
);
Комментарии:
1. Спасибо! Я уже понял. Просто я не знал о файле конфигурации маршрута.
Ответ №2:
Я думаю, что это не проблема, потому что binder должен иметь возможность подобрать это и привязать значение id для вас. Если вы хотите, чтобы ваша ссылка была ?param=value, не используйте id(в качестве параметра) и не меняйте конфигурацию маршрутизации.
Комментарии:
1. Мне нужно получить его как значение запроса