ASp.NET MVC: TryUpdateModel не обновляет все свойства - PullRequest
0 голосов
/ 21 мая 2009

У меня есть следующее действие:

public ActionResult Create()
{
    var entity = new Employee();
    TryUpdateModel(entity, new[] { "Person.Name", "Code", "CompanyID" });
    if (ModelState.IsValid)
    {
        var result = Service.MergeEmployee(entity);
        return RedirectToAction("List", new { success = true });
    }
    return View("Edit", new SupplierEmployeeModel() { Employee = entity });
}

В результате свойство TryUpdateModel не заполняет свойство Person.Name.

Это моя форма:

 <fieldset>
    <p>
        <label for="Name"><%=Strings.NAME %></label>
        <%= Html.TextBox("Person.Name", Model.Employee.Person.Name, new { Class = "text" })%>
        <%= Html.ValidationMessage("Name", "*") %>
    </p>
    <p>
        <label for="CompanyID"><%=Strings.SUPPLIER %></label>
        <%= Html.DropDownList("CompanyID") %>
        <%= Html.ValidationMessage("CompanyID", "*")%>
    </p>
    <p>
        <label for="Code"><%=Strings.CODE %></label>
        <%= Html.TextBox("Code", Model.Employee.Code)%>
        <%= Html.ValidationMessage("Code", "*") %>
    </p>
    <p>
        <%= Html.Hidden("ID", Model.Employee.ID)%>
    </p>
    <div id="tabs-DE-actions" class="ui-dialog-buttonpane  ui-helper-clearfix" style="display: block;">
        <button class="ui-state-default ui-corner-all" type="submit"><%=Strings.SAVE%></button>
    </div>
</fieldset>

Есть мысли о том, почему это происходит? Спасибо

Ответы [ 3 ]

4 голосов
/ 23 июля 2009

Убедитесь, что объект Person инициализирован в конструкторе Employee; если он пуст, для начала он, вероятно, не обновляется должным образом.

public Employee()
{
    Person = new Person();
}
0 голосов
/ 21 мая 2009

Чтобы заполнить Person.Name, связыватель модели должен создать нового Person. Вы дали модели связующего достаточно информации, чтобы сделать это? В качестве альтернативы, попробуйте создать Персона самостоятельно перед связыванием.

0 голосов
/ 21 мая 2009

Попробуйте это:

 TryUpdateModel(entity,"Person", new[] { "Name", "Code", "CompanyID" });
...