Как использовать ActionLink с RouteValueDictionary?

Я пытаюсь сделать так, чтобы мой URL выглядел так:

http://domain.com/controller/action/123/SomeTextForSEO

Я попытался использовать ссылку на действие, но она добавляет ?company=SomeTextForSEO вместо названия компании после косой черты.

 <%: Html.ActionLink("DomainList", "Index", "DomainList", new { id = item.CompanyID, company = item.CompanyDisplayName.Trim() }, new object { })%> 

и теперь я думаю, что мне нужно использовать RouteValueDictionary, но я не уверен, как это сделать в синтаксисе ASP.NET. Может ли кто-нибудь указать мне правильное направление? Примеров MSDN недостаточно.


person halfbit    schedule 31.01.2011    source источник
comment
Кстати, вы также можете передать null для последнего параметра в вашем вызове ActionLink. Чтобы обеспечить правильное разрешение перегрузки, передайте его как (объект) null, хотя   -  person Andras Zoltan    schedule 01.02.2011


Ответы (1)


Если вы перейдете на global.asax.cs и добавите новый маршрут, аналогичный существующему маршруту по умолчанию с шаблоном

"{controller}/{action}/{id}/{company}"

Перед ссылкой по умолчанию вы должны обнаружить, что ссылка будет правильно сгенерирована с вашим вызовом ActionLink как есть.

Я разговариваю по телефону, поэтому я хотел бы быть более подробным (ограничение маршрута было бы хорошей идеей, чтобы этот маршрут не мешал работе по умолчанию), но клавиатура HTC не поддерживает код;)

person Andras Zoltan    schedule 31.01.2011
comment
понятно. Я опечатал свой global.asa ... это правильный ответ. Когда у вас (или у кого-то появится шанс, я хотел бы знать, следует ли / когда мне использовать словарь значений маршрута и как ... - person halfbit; 01.02.2011
comment
RouteValueDictionary используется в некоторых ситуациях, когда у вас уже есть значения в форме словаря, которые вы не можете затем преобразовать в анонимный тип, потому что вы не знаете содержимого. Это также единственный способ объединить значения маршрута общим способом (например, добавить номер страницы к текущему URL-адресу, который может иметь неизвестное количество других значений маршрута) - это то, что MVC делает повсюду, когда производит ссылки из текущего запроса. В общем, я использую RouteValueDictionary только тогда, когда мне нужно одно из этих двух, потому что метод анонимного типа более сжат. - person Andras Zoltan; 01.02.2011