Как я могу перенаправить новый URL, когда я определил атрибут Route на моем контроллере MVC? - PullRequest
1 голос
/ 07 февраля 2020

У меня есть контроллер, определенный как

[Route(somecontroller1/someaction1{someid}]

И когда я пытаюсь Redirect перевести его в другое представление

Redirect("somecontroller2/someaction2{someid}")

мой URL-адрес

somecontroller1/someaction1{someid}/somecontroller2/someaction2{someid}

, поэтому мой вопрос: как я могу перенаправить только на somecontroller2/someaction2{someid}

, вы можете увидеть код ниже;

[HttpPost]
[Route("someController1/someaction1/{someid}")]
public ActionResult CreateComment(Comment  comment, int someid)
{

*//do something*

 return Redirect("someController2/someAction2/" + someid);

}

Ответы [ 2 ]

1 голос
/ 07 февраля 2020

Проблема в том, что вы забыли начальный "/" в вашем перенаправлении. Если вы перенаправляете без «/» в начале, asp. net пытается перенаправить на указанный URL внутри вызывающего контроллера.

Добавьте начальный «/» и перенаправление будет абсолютным:

return Redirect("/someController2/someAction2/" + someid);

Или вы можете перенаправить напрямую на свой контроллер:

return RedirectToAction("SomeAction2", "SomeController2", new{id = someid});

Важно понимать, что происходит, пока ASP. NET пытается маршрутизировать запросы. Есть несколько способов изменить / определить маршрутизацию. Вот некоторые ссылки, которые вы можете проверить:

https://www.programmingwithwolfgang.com/routing-in-asp-net-mvc/

https://docs.microsoft.com/de-de/aspnet/mvc/overview/getting-started/introduction/adding-a-controller

https://www.c-sharpcorner.com/UploadFile/3d39b4/routing-in-mvc/

0 голосов
/ 07 февраля 2020

Использовать метод перенаправления на действие.

return RedirectToAction("SomeAction2", "SomeController2", new{id = someid});

Это перенаправит страницу на представление нужного действия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...