2009-05-21 3 views
0

У меня есть следующие действия:ASp.NET MVC: TryUpdateModel не обновляет все свойства

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 }); 
} 

Что происходит, что свойство «Person.Name» не заполняются по TryUpdateModel.

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

<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> 

Любые мысли о том, почему это происходит? Благодаря

ответ

0

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

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

К сожалению, не работает :(Спасибо. –

0

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

+0

Странно то, что, если я вместо использования tryupdatemode использовать класс Employee в качестве параметра действия (общественное ActionResult Создать (объект Employee)) он связывает правильно , с заполнением Person.Name. –

4

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

public Employee() 
{ 
    Person = new Person(); 
}