2010-02-22 3 views
1

J'ai un formulaire de recherche que je veux utiliser des paramètres de chaîne de requête courts pour (par exemple? Q = valeur & s = quel que soit & c = blah) et je voudrais utiliser la liaison de modèle MVC pour obtenir ces paramètres dans mon action du contrôleur.Comment lier des champs de formulaire à des propriétés de modèle avec des noms différents?

Je peux créer un type qui reflète ces noms courts, mais je préfère avoir un type qui a des noms plus sensibles (par exemple q = Query, s = SortOrder, c = Cheese). Y a-t-il une manière simple et agréable de faire cela, comme les attributs de mon modèle? Je sais que je peux écrire un nouveau modèle de classeur pour cela, mais cela me semble être trop compliqué - je ne fais rien de compliqué, juste en utilisant des noms différents) - et il me semble que je devrais être assez explicite . Puisque l'infrastructure de liaison de modèles utilise TypeDescriptors, je suppose que je pourrais spécifier un descripteur de type personnalisé sur mon modèle qui renvoie des propriétés avec des noms différents, vraisemblablement à partir d'attributs sur le modèle lui-même.

De toute façon, j'espérais que quelqu'un l'avait déjà fait?

Répondre

2

Écrire votre propre modèle de classeur est exagéré mais c'est la façon de le faire. La liaison dans MVC utilise la réflexion, donc vous avez besoin d'une correspondance 1: 1. L'autre manière serait d'écrire une petite classe dans laquelle vos champs ressemblent à ce que vous voulez qu'ils regardent, puis liez la vue à cela.

Ensuite, dans votre contrôleur, vous pouvez saisir ces valeurs comme liaison normale, puis transférer les (belles) champs qui cherchent à l'autre modèle que vous avez.

+0

Je l'ai fait. Liant personnalisé. –

Questions connexes