2008-09-29 2 views
1

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

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

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

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


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

Route (добавлено до броской всего маршрута): ссылка

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

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

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

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

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

ответ

3

Дайте этому выстрел:

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

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

1

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

+0

Аа, "магия". Попробуем это утром. – Will 2008-09-30 02:56:23