c# - MVC Html.DisplayFor for Lists of Derived Models -
let's assume have 3 classes: derived1viewmodel
, derived2viewmodel
, baseviewmodel
serves superclass derived1viewmodel
, derived2viewmodel
.
i have displaytemplate has model list<baseviewmodel>
, call template views using model list<derived1viewmodel>
or list< derived2viewmodel>
.
if try this, exception triggered saying cannot convert list<derived1viewmodel>
or list<derived2viewmodel>
list<baseviewmodel>.
if try apply cast such @html.displayfor(model=>model.cast<baseviewmodel>.tolist(), "mytemplate")
invalidoperationexception thrown.
details: [invalidoperationexception: templates can used field access, property access, single-dimension array index, or single-parameter custom indexer expressions.]
can problem solved or necessary take approach?
note in @html.displayfor(model=>model, "mytemplate")
first parameter not model. expression
evaluated on model.
the model implicitly passed mvc expression compiler (using viewdata think) , model's type still declare @ start of razor page. has nothing expression. expression indicates data needed model starting parameter.
having said that, give shot:
@html.displayfor(model=>model.select(dm=>(baseviewmodel)dm).tolist(), "mytemplate")
although have feeling might hit mvc expression evaluation snag, can handle particular set of expressions. (constant expression, member access etc.)
we can come based on results.
Comments
Post a Comment