多態(tài)模型綁定這個問題問過在早期的MVC版本中。也有這篇博客文章一個解決問題的方法。我想知道MVC 3是否引入了可能有幫助的東西,或者是否還有其他選擇??傊G闆r就是這樣。我有一個抽象的基模型和兩個具體的子類。我有一個強(qiáng)類型視圖,它將模型呈現(xiàn)為EditorForModel()..然后,我有自定義模板來呈現(xiàn)每個具體類型。這個問題是在事后發(fā)生的。如果我使POST操作方法以基類為參數(shù),那么MVC就不能創(chuàng)建它的抽象版本(無論如何,我都不希望它創(chuàng)建實際的具體類型)。如果我創(chuàng)建了多個POST操作方法,這些方法僅隨參數(shù)簽名而變化,那么MVC會抱怨它不明確。據(jù)我所知,關(guān)于如何解決這個問題,我有幾個選擇。由于種種原因,我不喜歡它們中的任何一個,但我會在這里列出它們:創(chuàng)建自定義模型綁定,正如Darin在我鏈接的第一篇文章中所建議的那樣。創(chuàng)建一個區(qū)分器屬性,作為我鏈接到的第二個帖子?;陬愋偷陌l(fā)布到不同的動作方法???我不喜歡1,因為它基本上是隱藏的配置。其他一些從事代碼開發(fā)的開發(fā)人員可能不知道這一點(diǎn),并且浪費(fèi)了大量的時間試圖找出為什么在更改時事情會中斷。我不喜歡2,因為它看起來有點(diǎn)煩人。但是,我傾向于這種方法。我不喜歡3,因為那意味著違反了干法。還有其他建議嗎?編輯:我決定采用達(dá)林的方法,但做了一點(diǎn)小小的改變。我將其添加到抽象模型中:[HiddenInput(DisplayValue = false)]public string ConcreteModelType { get { return this.GetType().ToString(); }}然后在我的DisplayForModel()..你唯一要記住的是如果你不使用DisplayForModel()你得自己加進(jìn)去。
多態(tài)模型綁定
慕工程0101907
2019-10-05 03:03:06