如何将表单字段绑定到具有不同名称的模型属性?

时间:2010-02-22 17:53:52

标签: asp.net-mvc binding model

我有一个搜索表单,我想使用简短的查询字符串参数(例如?q = value& s = whatever& c = blah),我想使用MVC模型绑定来获取这些参数我的控制器动作。

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

我知道我可以为此编写一个新的模型绑定器,但这感觉就像是矫枉过正 - 我没有做任何复杂的事情,只是使用不同的名字) - 并且突然必须非常明确地感觉不对。

由于模型绑定基础结构使用TypeDescriptors,我想我可以在我的模型上指定一个自定义类型描述符,它返回具有不同名称的属性,可能来自模型本身的属性 - 至少这是可用的。

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

1 个答案:

答案 0 :(得分:2)

编写自己的模型绑定器是过度的,但这是实现它的方法。 MVC中的绑定使用反射,因此您需要1:1匹配。

另一种方法是编写一个小类,其中包含您希望它们看起来的字段,然后将视图绑定到该类。

然后在您的控制器中,您可以使用正常的绑定方式获取这些值,然后将这些(漂亮的)查找字段传输到您拥有的其他模型。