Html.BuildUrlFromExpression с параметрами ссылочного типа для действия - PullRequest
1 голос
/ 13 ноября 2008

Надеюсь, моя терминология верна. Изменить если нет.

Из моих классов Linq2Sql у меня есть класс Color. Одно из действий моего контроллера принимает экземпляр этого класса Color.

Я хочу создать ссылку на это действие, поэтому я использую

<%=Html.ActionLink<ColorController>(c=>c.Details(ViewData.Model.ActiveColor), "test")%>

Где ViewData.Model.ActiveColor отклоняется от вышеупомянутого экземпляра Color.
Это выглядит следующим образом:

/ цвет / Деталь цвета =? - Не совсем то, что я имел в виду, конечно ..

Что я делаю не так? Должен ли я начать создавать собственные ModelBinder?

EDIT
Я нашел, откуда пришло «-». Очевидно, что ActionLink вызывает ToString. Это довольно странно, так как я вижу больше возможностей для отображения чего-либо, чем для идентификации чего-либо (не для этого ли нужен GetHash?). Даже после реализации интерфейса Iserailizable на моем объекте он все еще использует метод ToString. Могу ли я где-нибудь определить, как сериализовать мой класс, а не с помощью ToString ()? Я чувствую, что нахожусь на неправильном пути.

1 Ответ

1 голос
/ 31 декабря 2008

Actionlink действительно вызывает ToString (). Я столкнулся с той же проблемой, используя даты. В моих URL я хотел, чтобы даты были dd-mm-yyyy вместо DateTime.ToString () по умолчанию.

Первый вариант - переопределить метод ToString () вашего Color. Если это невозможно (как в случае с DateTime), есть другие способы, но они немного «хакерские» ...

...