Как я могу создать эту ссылку действия? - PullRequest
1 голос
/ 30 сентября 2008

У меня проблемы с созданием ActionLink с использованием Preview 5. Все документы, которые я могу найти, описывают более старую универсальную версию.

Я строю ссылки на список вакансий на странице / вакансии. У каждой работы есть гид, и я хотел бы создать ссылку на / jobs / details / {guid}, чтобы я мог показать подробности о работе. У моего контроллера заданий есть контроллер индекса и контроллер деталей. Контроллер деталей берет гид. Я пробовал это

<%= Html.ActionLink(job.Name, "Details", job.JobId); %>

Однако, это дает мне URL "/ jobs / details". Что мне здесь не хватает?


Решено, с вашей помощью.

Маршрут (добавляется перед универсальным маршрутом):

routes.Add(new Route("Jobs/Details/{id}", new MvcRouteHandler())
{
Defaults = new RouteValueDictionary(new
    {
    controller = "Jobs",
    action = "Details",
    id = new Guid()
    }
});

Действие ссылка:

<%= Html.ActionLink(job.Name, "Details", new { id = job.JobId }) %>

Результаты в html-привязке:

http://localhost:3570/WebsiteAdministration/Details?id=2db8cee5-3c56-4861-aae9-a34546ee2113

Итак, его запутанные маршруты. Я перенес определение маршрута работы перед администратором сайта, и теперь оно работает. Очевидно, мои определения маршрута сосут. Мне нужно прочитать больше примеров.

Примечание: мои ссылки не показывались, а быстрые часы не работали (не может быстро просмотреть выражение с анонимным типом), что усложнило понимание того, что здесь происходит. Оказалось, что ссылки действий не показывались из-за очень незначительной опечатки:

<% Html.ActionLink(job.Name, "Details", new { id = job.JobId })%>

Это заставит меня снова.

Ответы [ 2 ]

3 голосов
/ 30 сентября 2008

Дайте этому шанс:

<%= Html.ActionLink(job.Name, "Details", new { guid = job.JobId}); %>

Где "guid" - это фактическое имя параметра в вашем маршруте. Это указывает механизму маршрутизации, что вы хотите поместить значение свойства job.JobId в параметр guid определения маршрута.

1 голос
/ 30 сентября 2008

Вы определили маршрут для обработки этого в файле Global.asax.cs? Маршрут по умолчанию: {controller} / {action} / {id}. Вы передаете «JobID», который фреймворк не будет сопоставлять с «id» автоматически. Вам нужно либо изменить его на job.id, либо определить маршрут для явной обработки этого случая.

...