当没有选中某些复选框时,MVC会收集复选框

时间:2017-04-27 00:21:20

标签: c# asp.net-mvc asp.net-mvc-4

我有一个我提交的表单,它有多个复选框。表单是用户定义的,因此它必须能够适应任何大小。我有一个" Addons"我正在使用。表单在复选框中显示插件,每个插件有4个选项。他们可以在每个插件上选择一个选项(jQuery以限制选中的一个checkox)但不需要任何选项。

我遇到的问题是当他们提交表单时,如果第一个复选框没有选中选项而其余部分未通过,因为它来自列表/集合如何使这些复选框可选并将数据传递给我控制器?

<h1>Pick Your Extras To Make It More Special</h1>
<fieldset>
    <ul>
        <li>Extra <br /><img src="UPS_30484.jpg" /></li>
        <li><label>One <br /> $1.25<br /> <input type="checkbox" name="Addons[0]" value="1" class="addon-checkboxes"></label></li>
        <li><label>Two <br /> $2.50<br /> <input type="checkbox" name="Addons[0]" value="2" class="addon-checkboxes"></label></li>
        <li><label>Tree <br /> $3.00<br /> <input type="checkbox" name="Addons[0]" value="3" class="addon-checkboxes"></label></li>
        <li><label>Four <br /> $4.00<br /> <input type="checkbox" name="Addons[0]" value="4" class="addon-checkboxes"></label></li>
   </ul>
</fieldset>
<fieldset>
   <ul>
        <li>Extra 2 <br /><img src="UPS_30484.jpg" /></li>
        <li><label>One <br /> $2.50<br /> <input type="checkbox" name="Addons[1]" value="5" class="addon-checkboxes"></label></li>
        <li><label>Two <br /> $5.00<br /> <input type="checkbox" name="Addons[1]" value="6" class="addon-checkboxes"></label></li>
        <li><label>Three <br /> $7.50<br /> <input type="checkbox" name="Addons[1]" value="7" class="addon-checkboxes"></label></li>
        <li><label>Four <br /> $10.00<br /> <input type="checkbox" name="Addons[1]" value="8" class="addon-checkboxes"></label></li>
   </ul>
</fieldset>
<fieldset>
    <ul>
        <li>Candy  <br /><img src="30484.jpg" /></li>
        <li><label>Small<br /> $5.00<br /> <input type="checkbox" name="Addons[2]" value="13" class="addon-checkboxes"></label></li>
        <li><label>Medium<br /> $10.00<br /> <input type="checkbox" name="Addons[2]" value="14" class="addon-checkboxes"></label></li>
        <li><label>Large<br /> $15.00<br /> <input type="checkbox" name="Addons[2]" value="15" class="addon-checkboxes"></label></li>
        <li><label>Bucket<br /> $20.00<br /> <input type="checkbox" name="Addons[2]" value="16" class="addon-checkboxes"></label></li>
   </ul>
</fieldset>

每个值表示数据库中具有addon产品外键的价格。所以我得到了一个Addons列表,但是当Addons[0]没有选择内容时,Addons[1]Addons[2]也没有提交。如果选择了所有值,则值会进入控制器,但我需要这些值是可选的。

提交时的视图模型:

public class ProductToCartViewModel : BaseObject
  {
    [Required]
    public int Price { get; set; }
    public int[] Addons { get; set; }
    public string DeliveryZipCode { get; set; }
    public DateTime DeliveryDate { get; set; }
    public ApplicationUser User { get; set; }
  }

1 个答案:

答案 0 :(得分:0)

如果用户只能从4个选项中选择一个选项,我认为你应该使用无线电而不是复选框。当您说“如果第一个复选框没有选中选项”时,您是指每个4个插件选项的第一个复选框吗?或者来自3个附加组?