2012-07-11 44 views
0

模型聯編程序無法在我的動作參數中實例化子對象 - PublicationSchedule始終爲空,Id,Name,Region填充爲OK。任何人都可以提出爲什麼這可能是?ASP.NET MVC中的遞歸模型綁定失敗

動作:

[HttpPost] 
public ActionResult Post(ProductTemplateViewModel viewModel) 
{ 
    //... 
} 

這些模型結合:

public class ProductTemplateViewModel 
{ 
    [Required] 
    public string Id { get; set; } 
    [Required] 
    public string Name { get; set; } 
    [Required] 
    public string Region { get; set; } 
    [Required] 
    public PublicationScheduleViewModel PublicationSchedule { get; set; } 
} 

public class PublicationScheduleViewModel 
{ 
    [Required, StringArrayNotEmpty] 
    public string[] DaysOfWeek { get; set; } 
    [Required, Range(0, 23)] 
    public int HoursOfDay { get; set; } 
    [Required, Range(0, 59)] 
    public int MinutesOfHour { get; set; } 
} 

HTTP請求形式的數據:

id:gf 
name:fg 
region:Africa 
daysOfWeek:Wednesday 
hoursOfDay:3 
minutesOfHour:4 

形式:

<input type="text" id="id" name="id"> 
<input type="text" id="name" name="name"> 
<select id="region" name="region"> 
    <option value="Africa" selected="selected">Africa</option> 
</select>  
<input type="checkbox" id="chk(Monday)" name="daysOfWeek" value="Monday"> 
<input type="checkbox" id="chk(Tuesday)" name="daysOfWeek" value="Tuesday"> 
<select id="hoursOfDay" name="hoursOfDay"> 
     <option value="0">00</option> 
    <option value="1">01</option>      
</select> 
<select id="minutesOfHour" name="minutesOfHour"> 
    <option value="0" selected="selected">00</option> 
    <option value="1">01</option> 
    <option value="2">02</option>      
</select> 
+1

什麼是您的表單?請粘貼在這裏。 – Mohayemin 2012-07-11 11:43:57

+1

你可以發表你的實際視圖代碼,其中包含的形式?或者你直接「硬編碼」所有的HTML?爲什麼不使用強類型視圖和內置的HTML.helpers?順便說一句,模型綁定器支持複雜的嵌套視圖模型(並且內置的HTML.helpers支持這一點並生成正確的HTML),您只需要相應地命名輸入:例如:'daysOfWeek'應該是'PublicationSchedule.daysOfWeek'等。 – nemesv 2012-07-11 12:53:58

回答

2

字段名稱必須是 PublicationSchedule.daysOfWeek,PublicationSchedule.hoursOfDay和PublicationSchedule.minutesOfHour