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