2009-05-21 79 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

不幸的是,沒有工作:(謝謝。 – 2009-05-21 11:28:57

0

爲了填補Person.Name,模型綁定必須創建一個新的人。你有沒有給模型綁定足夠的信息做到這一點?或者,嘗試在綁定前自己創建人員。

+0

奇怪的是,如果我不是使用tryupdatemode使用Employee類作爲行動參數(公衆的ActionResult創建(Employee實體)),它正確地結合,填寫Person.Name。 – 2009-05-21 13:39:23

4

確保Person對象在Employee構造函數中初始化;如果開頭爲空,則可能未正確更新。

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