c# - Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions -


error line;

modelmetadata metadata = modelmetadata.fromlambdaexpression<t, object>(columnproperty, phtml.viewdata); 

model

public class menuauths : entitybase { [bsonignoreifnull]         [bsonrepresentation(bsontype.objectid)]         public string menuid { get; set; } [bsondefaultvalue(false)]         public bool allownew { get; set; } } 

cshtml;

new column<lsdatamodels.menuauths> { columnproperty = c => c.menuid }, new column<lsdatamodels.menuauths> { columnproperty = c => c.allownew}, 

this line work new column<lsdatamodels.menuauths> { columnproperty = c => c.menuid } line have error new column<lsdatamodels.menuauths> { columnproperty = c => c.allownew},

i can try property type change bool? , bool , nulable<bool> error has been continue. remove [bsondefaultvalue(false)] attribute nothing change.

what can do?

edit: error templates can used field access, property access, single-dimension array index, or single-parameter custom indexer expressions.

i find solition problem.

i use propertyinfo

i add exdent method on expression<func<t, dynamic>>

public static propertyinfo getproperty<t>(this expression<func<t, dynamic>> expression)         {             memberexpression memberexpression = null;              if (expression.body.nodetype == expressiontype.convert)             {                 memberexpression = ((unaryexpression)expression.body).operand memberexpression;             }             else if (expression.body.nodetype == expressiontype.memberaccess)             {                 memberexpression = expression.body memberexpression;             }              if (memberexpression == null)             {                 throw new argumentexception("not member access", "expression");             }              return memberexpression.member propertyinfo;         } 

and change line

modelmetadata metadata = modelmetadata.fromlambdaexpression<t, object>(columnproperty, phtml.viewdata); 

to

propertyinfo pi = fieldproperty.getproperty<t>(); 

i can access need attributes , properties on propertyinfo


Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -