ASP.Net MVC, ViewPage <Dynamic>и EditorFor / LabelFor - PullRequest
6 голосов
/ 16 сентября 2010

Я играю с MVC3 с использованием синтаксиса Razer, хотя считаю, что проблема носит более общий характер.

В контроллере у меня что-то типа:

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

My View наследуется от System.Web.Mvc.ViewPage

Но если я попытаюсь сделать что-то вроде:

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

Я получаю сообщение об ошибке: «Дерево выражений может не содержать динамическую операцию»

Однако использование ViewPage, как и EditorFor / LabelFor, кажется довольно распространенным. Поэтому я был бы удивлен, если нет способа сделать это - оцените любые указатели.

Ответы [ 2 ]

3 голосов
/ 07 октября 2010

Не используйте ViewPage<Dynamic>. Я бы порекомендовал вам использовать модель вида и строго указывать свой вид для этой модели вида:

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

и затем строго наберите ваш взгляд на ViewPage<MyViewModel> и:

@Html.LabelFor(x => x.User.Name)
@Html.EditorFor(x => x.User.Name)
<div>@Model.SomeOtherProperty</div>
0 голосов
/ 21 декабря 2010

Кажется, что деревья выражения => http://msdn.microsoft.com/en-us/library/bb397951.aspx не должны содержать динамических переменных.

К сожалению, это относится к TModel, когда вы используете в нем динамику.

public static MvcHtmlString TextBoxFor<TModel, TProperty>(
    this HtmlHelper<TModel> htmlHelper,
    Expression<Func> expression
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...