Как связать поля формы со свойствами модели с разными именами? - PullRequest
1 голос
/ 22 февраля 2010

У меня есть форма поиска, для которой я хочу использовать параметры строки короткого запроса (например,? Q = значение & s = что угодно & c = blah), и я хотел бы использовать привязку модели MVC для получения этих параметров в действие моего контроллера.

Я могу создать тип, который отражает эти короткие имена, но я бы предпочел, чтобы тип имел более разумные имена (например, q = Query, s = SortOrder, c = Cheese). Есть ли хороший простой способ сделать это, например, атрибуты в моей модели?

Я знаю, что могу написать новое связующее для этой модели, но это похоже на излишество - я не делаю ничего сложного, просто использую другие имена) - и это неправильно, когда вдруг приходится быть настолько явным.

Поскольку инфраструктура привязки модели использует TypeDescriptors, я думаю, я мог бы указать собственный дескриптор типа в моей модели, который возвращает свойства с разными именами, предположительно из атрибутов самой модели - по крайней мере, это можно было бы использовать.

В любом случае, я надеялся, что кто-то уже сделал это?

1 Ответ

2 голосов
/ 23 февраля 2010

Написание вашей собственной модели переплетов излишне, но это способ сделать это. Привязка в MVC использует отражение, поэтому вам нужно совпадение 1: 1.

Другой способ - написать небольшой класс, в котором есть ваши поля, которые выглядят так, как будто вы хотите, чтобы они выглядели, а затем привязать представление к этому.

Затем в вашем контроллере вы можете получить эти значения обычным способом привязки, а затем перенести эти (красивые) поля в другую модель, которая у вас есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...