Перенаправление на действие и передача параметров

#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. Мне нужно получить его как значение запроса