代码之家  ›  专栏  ›  技术社区  ›  Saqib

ASP.NetMVC、ViewPage<Dynamic>和EditorFor/LabelFor

  •  6
  • Saqib  · 技术社区  · 14 年前

    在控制器中,我有如下内容:

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

    我的观点继承自系统.Web.Mvc.查看页面

    但如果我试着这样做:

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

    我得到错误:“表达式树可能不包含动态操作”

    然而,ViewPage的使用似乎相当普遍,EditorFor/LabelFor也是如此。因此,如果没有办法做到这一点,我会感到惊讶——感谢任何指点。

    2 回复  |  直到 14 年前
        1
  •  0
  •   tivo    14 年前

    似乎表达式trees=> http://msdn.microsoft.com/en-us/library/bb397951.aspx 不能包含任何动态变量。

    public static MvcHtmlString TextBoxFor<TModel, TProperty>(
        this HtmlHelper<TModel> htmlHelper,
        Expression<Func> expression
    )
    
        2
  •  3
  •   Darin Dimitrov    14 年前

    不要使用 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>