Как я могу создать эту ссылку на действие?
-
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, либо определить маршрут для явной обработки этого случая.