2015-09-22 2 views
1

В настоящее время я нахожусь на странице /Customer/Edit/13244.Url.Action возвращает текущую ссылку в браузере

Когда я пользуюсь @Url.Action("Edit", "Customer") на той же странице, он возвращает мне /Customer/Edit/13244, но я хочу, чтобы он вернул /Customer/Edit/.

Просьба сообщить мне, как исправить эту проблему.

+0

Зачем вам нужен код контроллера? –

+0

Вы не хотите, чтобы id в url был прав? –

ответ

2

Вам нужно будет использовать (при условии, вы используете маршрут по умолчанию с id = UrlParameter.Optional

@Url.Action("Edit", "Customer", new { id = "" }) 
+0

Да, я в настоящее время использую то, что предложили, но я думал, что это не правильное решение: P –

+0

Вам нужно это сделать, потому что значение автоматически добавляется к параметрам маршрута с помощью UrlHelper –

+0

@WaqarAhmed, иногда вам нужно настроить правильные решения –

3

Это «особенность» MVC, что многие люди считают неестественным и was previously reported as a bug

официальный ответ от Microsoft:.

В конечном счете, если вы хотите получить максимальный контроль над тем, что генерируется для URL-адреса, необходимо рассмотреть несколько вариантов:

  1. использовать именованные маршруты, чтобы гарантировать, что только маршрут вы хотите привыкнет для генерации URL (часто это хорошая практика, хотя это не поможет в данном конкретном случае)
  2. Укажите все параметры маршрута явно - даже значения, которые вы хотите быть пустыми. Это один из способов решения этой конкретной проблемы.
  3. Вместо использования маршрутизации для создания URL-адресов вы можете использовать ~/синтаксис Razor или вызвать Url.Content ("~/someurl"), чтобы гарантировать, что никакая дополнительная (или неожиданная) обработка не будет выполняться с URL-адресом, который вы пытаетесь генерировать.

На самом деле, эта ошибка только поднимает свою уродливую голову, когда вы пытаетесь повторно цель действие имя метода. Если вы используете другое имя метода действий, отличное от Edit, в случае, если за ним не следует id, эта проблема будет волшебным образом исчезнуть.