Подтвердить что ты не робот

URL.Action(), включая значения маршрута

У меня есть приложение ASP.Net MVC 4, и я использую помощник Url.Action следующим образом: @Url.Action("Information", "Admin")

Эта страница используется как для добавления нового, так и для редактирования профиля администратора. URL-адреса выглядят следующим образом:

 Adding a new:       http://localhost:4935/Admin/Information
 Editing Existing:   http://localhost:4935/Admin/Information/5 <==Admin ID

Когда я нахожусь в разделе Editing Existing сайта и решаю, что я хотел бы добавить нового администратора, я нажимаю на следующую ссылку:

 <a href="@Url.Action("Information", "Admin")">Add an Admin</a>

Однако проблема в том, что приведенная выше ссылка действительно будет http://localhost:4935/Admin/Information/5. Это происходит только тогда, когда я на этой странице редактирую существующий администратор. В любом месте на сайте он правильно связывается с http://localhost:4935/Admin/Information

Кто-нибудь еще видел это?

ОБНОВЛЕНИЕ:

RouteConfig:

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );    
4b9b3361

Ответ 1

исходящий URL-адрес в mvc, сгенерированный на основе текущей схемы маршрутизации.

потому что для вашего метода действия с информацией требуется параметр id, а в вашей коллекции маршрутов есть идентификатор вашего текущего запрошенного URL (/Admin/Information/5), параметр id автоматически получен из существующих значений сбора маршрута.

для решения этой проблемы вы должны использовать UrlParameter.Optional:

 <a href="@Url.Action("Information", "Admin", new { id = UrlParameter.Optional })">Add an Admin</a>

Ответ 2

Вы также можете использовать в этой форме:

<a href="@Url.Action("Information", "Admin", null)"> Admin</a>