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

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -