ActionLink Включает Текущий {id} в URL

В данный момент в моем браузере отображается страница:http://localhost:19255/Object/Browse/1.

Ссылка на этой странице создается с помощью:@Html.ActionLink("...", "Browse", "Object")

Но сгенерированная ссылка на самом деле:/Object/Browse/1

Мое понимание того, что происходит, состоит в том, что MVC видит, что у моего маршрута есть часть {id}, которую я не предоставил. Так что он пошел дальше и включил часть {id} с текущей страницы.

Справедливо, но как мне создать ссылку без нее? Я старалсяnull, а такжеnew { id = null } но ни один не работал.

 Zach dev08 июн. 2012 г., 22:26
Я хотел бы увидеть ваш маршрут по умолчанию ...
 Jonathan Wood08 июн. 2012 г., 22:12
Да.............
 CD Smith08 июн. 2012 г., 22:11
Итак, вы хотите ссылку на действие без парама, это то, что я слышу?
 CD Smith08 июн. 2012 г., 22:17
Не видя действия, которое создает/Object/Browse Я не уверен, что вы не могли видетьid потому что похоже, что для этого представления требуется значение, чтобы визуализировать представление для просмотра объекта с этимid, Имеет ли это смысл? лол
 Jonathan Wood08 июн. 2012 г., 22:43
Мы не вносили никаких изменений в маршрут, созданный автоматически при создании приложения MVC. Это полностью стандартно.

Ответы на вопрос(2)

Решение Вопроса

@Html.ActionLink("...", "Browse", "Object", null)              // Has no effect
@Html.ActionLink("...", "Browse", "Object", new { id = null }) // Error

Следующее решает проблему:

@Html.ActionLink("...", "Browse", "Object", new { id = "" })   // No ID is passed

что MVC извлекает этот идентификатор из модели напрямую, поскольку вы его не указали. Я видел это раньше, но у меня нет времени, чтобы проверить это.

Попробуйте переписать@Model.Id перед отображением этой ссылки, чтобы увидеть, откуда она взялась. Тогда, я думаю, вы сможете спрятать значение Id в новой переменной, если вам это нужно, и установить @ Model.Id = null. Вроде взломать ... конечно :)

Ваш ответ на вопрос