子视图绑定中的子模型c#

时间:2012-10-03 17:10:19

标签: c# .net asp.net-mvc

我有以下主要模型:

public class PersonalDetailContainerViewModel {

    public AprobacionViewModel aprobacionPersonal { get; set; }
    public AprobacionViewModel aprobacionMinera { get; set; }

public PersonalDetailContainerViewModel() {
        aprobacionPersonal = new AprobacionViewModel();
        aprobacionMinera = new AprobacionViewModel();
    }
}

子模型:

public class AprobacionViewModel {

    [DisplayName("Observación")]
    public string observation { get; set; }
    [DisplayName("Responsable")]
    public string responsable { get; set; }
    [UIHint("DropDownList")]
    [DisplayName("Estado")]
    public IEnumerable<SelectListItem> ListEstado { get; set; }

    public AprobacionViewModel() {
        ListEstado = CommonService.createDropDownListEstado();
    }

}

主要观点:

@model PersonalDetailContainerViewModel

@Html.Partial("Aprobacion", Model.aprobacionPersonal)
@Html.Partial("Aprobacion", Model.aprobacionMinera)

和......详情视图:

@model AprobacionViewModel
<fieldset>
    <legend>Aprobación / Rechazo</legend>
            @Html.EditorFor(m => m.ListEstado, null)<br />
            @Html.EditorFor(m => m.observation, null)<br />
            @Html.EditorFor(m => m.responsable, new { disabled = "disabled" })

</fieldset>

我的问题,在绑定中我总是收到AprobacionViewModel字段的空值:

[HttpPost]
public ActionResult Details(PersonalDetailContainerViewModel model){

    model.aprobacionPersonal.observation //NULL ??
}

可以在没有自定义模型绑定器的子视图中使用子模型吗?

ps:Darin Dimitrov是我的英雄:))我想要一个粉丝页面只是点击“我喜欢它!” Darinvousêtesmonhéros!! ou est votre page facebook pour les fans?

1 个答案:

答案 0 :(得分:0)

@Html.Partial在渲染元素时不尊重模型层次结构,因此表单元素将不会被恰当地命名,因此不会受到模型约束。

改为使用@Html.EditorFor

@model PersonalDetailContainerViewModel

@Html.EditorFor(model => model.aprobacionPersonal)
@Html.EditorFor(model => model.aprobacionMinera)

使用Html.Partial呈现HTML内容/布局等 - 而不是表单的一部分。