views:

74

answers:

1

I'm playing with MVC3 using the Razer syntax, though I believe the problem to be more general.

In the controller, I have something like:

ViewModel.User = New User(); // The model I want to display/edit
ViewModel.SomeOtherProperty = someOtherValue; // Hense why need dynamic
Return View();

My View inherits from System.Web.Mvc.ViewPage

But if I try to do something like:

<p>
@Html.LabelFor(x => x.User.Name
@Html.EditorFor(x => x.User.Name
</p>

I get the error: "An expression tree may not contain a dynamic operation"

However, the use of ViewPage seems quite common, as are EditorFor/LabelFor. Therefore I'd be surprised if there's not a way to do this - appreciate any pointers.

+1  A: 

Don't use ViewPage<Dynamic>. I would recommend you using a view model and strongly type your view to this view model:

var model = new MyViewModel
{
    User = new User
    {
        Name = "foo"
    },
    SomeOtherProperty = "bar"
};
return View(model);

and then strongly type your view to ViewPage<MyViewModel> and:

@Html.LabelFor(x => x.User.Name)
@Html.EditorFor(x => x.User.Name)
<div>@Model.SomeOtherProperty</div>
Darin Dimitrov