例如,我自定义了一个ViewModel名字为MyViewModel
而我在页面中绑定的对象可能是MyViewModel.Object1.
如果View中的model是Object1的时候,我们就可以用
Html.TexboxFor(Model=>Model.Field1)来呈现数据,
但是现在用Html.TexboxFor(Model.Object1=>Model.Object1.Field1)是不行的,
有什么好的办法可能使用类似于Html.TexboxFor的方法么??

解决方案 »

  1.   

    Html.TexboxFor(Model.Object1 => new { Field1 = Model.Object1.Field1 })
      

  2.   

    Html.TexboxFor(Model => Model.Object1.Field1)其实本质上是你没有理解 Lambda 表达式。
      

  3.   

    貌似不行哦
    提示:try specifying the arguments explicity
      

  4.   

    (Model=>Model.Field1)

    (Model.Object1=>Model.Object1.Field1)是一样的。也可以
    (C=>C.Field1)
      

  5.   

    但是在Viwe中的Model是MyViewModel时
    (Model.Object1=>Model.Object1.Field1)报错~~~
      

  6.   

    Model => Model.Object1.Field1
      

  7.   


    这样是可以运行,但是生成的控件的name="object1.Field1",
    我期望生成name="Field1"
      

  8.   

    因为在post的方法中,我接收的参数是Object1,而不是MyViewModel
      

  9.   

    用partial或renderpartial是可以的,但不用是不是也可以呢??
      

  10.   

    如何在生成控件在post时,绑定到正确的参数Model上呢?
      

  11.   

    eg:@Html.TextBoxFor(m => m.dateStart, new { id = "dpBegin", @class = "datepicker", @style = "width:150px;" })
      

  12.   

    谢谢答复,
    但是我现在有个问题是,我使用Html.Editfor,定义了很多自定义的子模板,在share目录的EditTemplate下,我如何才能重用呢?子模板如何动态生成id和name呢??
      

  13.   

    你需要使用 ViewModel 来传递 id 和 name
      

  14.   


    能否给个小例子么,如何使用ViewModel来传递id和name?
    还是没想明白~
      

  15.   

    MvcTempDemohttp://www.dalsoft.co.uk/blog/index.php/2010/04/26/mvc-2-templates/