如何使CheckBoxFor仅在值为true时返回POST数据
本文关键字:true 返回 POST 数据 何使 CheckBoxFor | 更新日期: 2023-09-27 17:58:40
我有一个模型,它有一个布尔属性和一些其他具有DataAnnotations Required属性的属性。
在我看来我有
@Html.CheckBoxFor(model => model.MyProduct.BloodTestEnabled, new { @class = "cb" })
但是,如果未选中该复选框,则该值为false,并且这将在MyProduct.BloodTestEnabled的实例为false的情况下返回到控制器,但因为它具有MyProduct的实例,所以ModelState.IsValid等于false,因为捕获了Required属性。
如果复选框为true,我只希望它与modelbinder创建的MyProduct的新实例一起发布回控制器。
我所做的是修复它,但不确定它是否正确:
public class MyViewModel
{
public MyProdct MyProduct
{
get;
set;
}
public bool BloodTestEnabled { get; set; }
}
public ActionResult Add(ProductViewModel newProducts)
{
if (!ModelState.IsValid)
{
return View("HomeIndex", newProducts);
}
//Some other code here
newProducts.MyProduct.BloodTestEnabled = newProducts.BloodTestEnabled;
_basket.AddProduct(newProducts.MyProduct);
}
只需使用输入标记即可。CheckBoxFor方法创建一个隐藏的输入,该输入返回True/False值。CheckBoxFor也不适用于列表或非布尔值。
复选框用于这样的渲染:
<input checked="checked" id="BloodTestEnabled"
name="BloodTestEnabled" type="checkbox" value="true" />
<input name="BloodTestEnabled"
type="hidden" value="false" />
你的代码应该是这样的:
<input type="checkbox" name="BloodTestEnabled" class="cb" />
你可以在这里测试你的输入并微调HTML
http://www.w3schools.com/html/tryit.asp?filename=tryhtml_form_checkbox