2010-02-22 74 views
1

我有一个搜索表单,我想使用短查询字符串参数(例如?q =值& s =任何& c = blah),我想使用MVC模型绑定来获取这些参数到我的控制器行动。如何将表单域绑定到具有不同名称的模型属性?

我可以创建一个反映这些短名称的类型,但我宁愿有一个类型具有更明智的名称(例如q = Query,s = SortOrder,c = Cheese)。有没有一个简单的方法可以做到这一点,比如我的模型的属性?

我知道我可以为此编写一个新的模型绑定器,但这感觉像是矫枉过正 - 我没有做任何复杂的事情,只是使用了不同的名称) - 并且必须突然显得非常明确。由于模型绑定基础设施使用TypeDescriptors,我想我可以在我的模型上指定一个自定义类型描述符,该描述符返回具有不同名称的属性,大概是从模型本身的属性 - 至少这是可用的。

无论如何,我希望有人已经这样做了?

回答

2

编写你自己的模型绑定器是矫枉过正的,但它是这样做的。 MVC中的绑定使用反射,因此您需要1:1匹配。

另一种方式是编写一个小型的类,其中有你的字段,看起来像你希望他们看,然后绑定视图。

然后在你的控制器中,你可以用普通的绑定方式获取这些值,然后将这些(漂亮的)外观场转移到你拥有的另一个模型上。

+0

我已经做到了。自定义绑定。 – 2010-02-23 08:37:43

相关问题