2011-07-24 95 views
2

有人可以幫助我更好地瞭解DefaultModelBinder,它處理如何結合有類型對象的屬性模型?MS MVC3模型綁定的對象

我已經下載了代碼,並試圖通過它追蹤,但我仍然抓我的頭有點。

比方說,我有一個這樣的型號:

public class MyModel{ 
    public object MyProperty{ get; set; } 
} 

,並假設我的形式都是正確生成(例如:NAME =「MyModel.MyProperty」)

針對各種情況會發生什麼MyProperty實際上被設置爲某些類型的實例?

就我而言,我得出從DefaultModelBinder定製粘合劑和覆蓋CreateModel()與myProperty的設置正確的類型返回爲MyModel。我注意到如果我將MyProperty設置爲一個字符串,那麼由於某種原因DefaultModelBinder :: BindProperty(),返回一個字符串[]大小爲1的表單字段的內容,而不是一個字符串。爲什麼?

如果MyProperty是一些更復雜的類型,即使我的表單字段都正確命名(例如:name =「MyModel.MyProperty.FirstName」),綁定似乎根本不起作用。

有沒有人處理複雜/抽象模型結合這樣的情況之前?有沒有更好的辦法? (我知道這很奇怪,但我確實需要讓MyModel的MyProperty成爲對象,因爲我不知道它實際上是什麼類型,直到運行時爲止)

回答

0

考慮使用接口併爲其使用自定義綁定。這可能嗎?然後在運行時沒有未知的對象類型。