2012-05-14 113 views
0

我有一個嵌套類的實體模型。 FSRHire是家長和員工是孩子:張貼到控制器無法正常工作

class FSRHire { 
    ... 
    public virtual Employee Employee 
    ... 
} 
class Employee { 
    ... 
    public string LastName {get;set;} 
    public DateTime DOB {get;set;} 
    ... 
} 

查看:

<div class="editor-label"> 
    @Html.LabelFor(model => model.Employee.LastName) 
</div> 
<div class="editor-field"> 
    @Html.EditorFor(model => model.Employee.LastName) 
    @Html.ValidationMessageFor(model => model.Employee.LastName) 
</div> 
<div class="editor-label"> 
    @Html.LabelFor(model => model.Employee.DOB) 
</div> 
<div class="editor-field"> 
    @Html.TextBox(Html.IdFor(model => model.Employee.DOB).ToString(), Model.Employee.DOB.HasValue ? Model.Employee.DOB.Value.ToString("d") : "", new { @class = "date" }) 
    @Html.ValidationMessageFor(model => model.Employee.DOB) 
</div> 

的職位到控制器不工作。下面是該請求的數據:

... Employee.LastName =工人& Employee_DOB = 01%2F01%2F1970 & ......

模型綁定拿起名字就好了。 Employee.DOB爲空。

它的可能是由DOB字段中的下劃線引起的。 (Employee_DOB)。我想知道爲什麼它是這樣的以及我如何解決它。

+0

這是一個在System.Web.Mvc.Html在MVC 4.0。這可想而知。我正在研究這種技術來自哪裏。 – tzerb

+0

我爲它添加了標籤。無論如何,如果您沒有改變HTML幫助程序生成標記的方式,我建議您爲MVC團隊打開一個錯誤。你應該知道,ASP.Net-MVC4仍在測試中...... :( – gdoron

+0

我實際上改變了標記以與jquery ui datepicker一起工作(基於不正確的博客條目)。我添加了我不得不在視圖中改變爲你的答案。 – tzerb

回答

1

它應該是這種格式:

...Employee.LastName=Worker&Employee.DOB=01%2F01%2F1970& ... 

從:更改

Employee_DOB=01%2F01%2F1970& 
// ^

Employee.DOB=01%2F01%2F1970& 
// ^

關於到視圖:

@Html.TextBox(Html.IdFor(model => model.Employee.DOB).ToString(), Model.Employee.DOB.HasValue ? Model.Employee.DOB.Value.ToString("d") : "", new { @class = "date" }) 

Web.Mvc dll中沒有IdFor方法,你可能自己寫了它或者使用了一些庫,反正它不正確。

更改線路視圖看起來像這樣:

@Html.TextBoxFor(model => model.Employee.DOB, Model.Employee.DOB.HasValue ? Model.Employee.DOB.Value.ToString("d") : "", new { @class = "date" }) 
相關問題