I think MVC's way of suggesting that it needs a direct member of the
What (I think) MVC is doing in the
x => x.Name case is analyze the expression and make sure its composed of a single node, which is a property/field of the input parameter (no need to check if the property/field belongs to the Model class, since this is strongly typed in the expression itself)
So, basically MVC takes a reference to a member of the Model class. After doing so, it uses the Name of the member to generate the
for attribute of the HTML element and the Value of the member for the current Model instance to do the actual display (using reflection, probably).
Using the second approach it might still be possible, but more indirect, because when parsing the Lambda expression, it should also check that the
Model variable is an instance of the Model class, in addition to all the other things it needs to do.