2008-11-13 2 views
1

Надеюсь, моя терминология правильная. Отредактируйте, если нет.Html.BuildUrlFromExpression с ссылочными типами параметров для действия

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

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

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

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

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

Что я делаю не так? Должен ли я создавать пользовательские ModelBinders?

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

ответ

1

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

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

Смежные вопросы