Как я могу создать эту ссылку на действие?

StackOverflow https://stackoverflow.com/questions/150845

  •  02-07-2019
  •  | 
  •  

Вопрос

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

Я создаю ссылки на список заданий на странице / jobs.Каждое задание имеет guid, и я хотел бы создать ссылку на /jobs/details/{guid}, чтобы я мог показать подробную информацию о задании.В моем контроллере заданий есть контроллер индекса и контроллер сведений.Контроллер сведений принимает 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

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

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

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

Это снова меня достанет.

Это было полезно?

Решение

Попробуй это сделать:

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top