/ / ASP.Net MVC, ViewPage <Dynamic> та EditorFor / LabelFor - asp.net-mvc, динамічний

ASP.Net MVC, ViewPage <Dynamic> та EditorFor / LabelFor - asp.net-mvc, динамічні

Я граю з MVC3 за допомогою синтаксису Razer, хоча я вважаю, що проблема є більш загальною.

У контролері у мене є щось на кшталт:

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

Мій погляд успадковується від System.Web.Mvc.ViewPage

Але якщо я спробую зробити щось на кшталт:

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

Я отримую помилку: "Дерево виразів не може містити динамічну операцію"

Однак використання ViewPage видається досить поширеним, як і EditorFor / LabelFor. Тому я "буду здивований, якщо немає способу зробити це - оцінюйте будь-які вказівки.

Відповіді:

0 для відповіді № 1

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

На жаль, це стосується TModel, коли ви використовуєте в ньому динаміку.

public static MvcHtmlString TextBoxFor<TModel, TProperty>(
this HtmlHelper<TModel> htmlHelper,
Expression<Func> expression
)

3 для відповіді № 2

Не використовуйте 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>