2010-02-22 66 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

相關問題