2012-02-07 96 views
1

這可能是我遇到的最令人沮喪的錯誤。沒有爲此對象定義的無參數構造函數。當處理MultiSelectList

我有一個實體頻道與廣告位有很多關係。在創建時,用戶可以選擇他們想要屬於他們的頻道的廣告插槽。

我有這樣的模式:

[Required] 
[Display(Name = "Name")] 
public string ChannelName { get; set; } 

[Display(Name = "Description")] 
public string ChannelDescription { get; set; } 

//TODO: Add Sub Publisher Drop-Down 

[Required(ErrorMessage = "You must select at least one Ad Slot.")] 
[Display(Name = "Ad Slot(s)")] 
public MultiSelectList AdSlots { get; set; } 

,這在我看來:

<div class="field"> 
    @Html.LabelFor(m => m.ChannelName) 
    @Html.TextBoxFor(m => m.ChannelName) 
    @Html.ValidationMessageFor(m => m.ChannelName) 
</div> 
<div class="field"> 
    @Html.LabelFor(m => m.ChannelDescription) 
    @Html.TextAreaFor(m => m.ChannelDescription, new { @class = "description" }) 
    @Html.ValidationMessageFor(m => m.ChannelDescription) 
</div> 
<div class="field"> 
    @Html.LabelFor(m => m.AdSlots) 
    @Html.ListBoxFor(m => m.AdSlots, new MultiSelectList(new[] { new { Value = "", Text = "" } }, "Value", "Text", new[] { "" }), new { Class = "multiselect", Multiple = "multiple", Size = 12 }) 
    @Html.ValidationMessageFor(m => m.AdSlots) 
</div> 

這是處理處理我的控制器操作:

//GET: /publishers/channels/new 
public ActionResult New() 
{ 
    return View(); 
} 

//POST: /publishers/channels/new 
[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult New(Models.Channels.Create channelModel) 
{ 
    if (ModelState.IsValid) 
    { 
     // Channel 
     Core.Linq.APMaster.Channel channel = new Core.Linq.APMaster.Channel(); 
     channel.PublisherId = PublisherId; 
     channel.Guid = Guid.NewGuid(); 
     channel.ChannelName = channelModel.ChannelName; 
     channel.ChannelDescription = channelModel.ChannelDescription; 
     channel.DateCreated = DateTime.UtcNow; 
     channel.UserCreated = PublisherId; 
     //TODO: Fix CreatedFromIP data-type bug. 
     channel.CreatedFromIP = 0; 
     channel.IsActive = true; 
     channel.IsCustom = false; 
     myDBContext.APMasterDBC.Channels.InsertOnSubmit(channel); 

     // Ad Slots 
     foreach (SelectListItem adSlotModel in channelModel.AdSlots) 
     { 
      Core.Linq.APMaster.ChannelAdSlot channelAdSlot = new Core.Linq.APMaster.ChannelAdSlot(); 
      channelAdSlot.ChannelId = channel.ChannelId; 
      channelAdSlot.AdSlotId = int.Parse(adSlotModel.Value); 
      channelAdSlot.IsActive = true; 
      myDBContext.APMasterDBC.ChannelAdSlots.InsertOnSubmit(channelAdSlot); 

     } 

     myDBContext.APMasterDBC.SubmitChanges(); 

     TempData["flash"] = "Your Channel Has Been Created"; 

     return RedirectToAction("Index"); 
    } 
    else 
    { 
     TempData["flash"] = "Your Channel Has Not Been Created"; 
    } 

    return View(channelModel); 
} 

正如你所看到的我正試圖從MultiSelectList中插入許多廣告插槽。但是我一直在收到:沒有爲此對象定義的無參數構造函數。

有誰知道這是爲什麼?有人可以告訴我我做錯了什麼嗎?它爲什麼扔這個?

回答

相關問題