2014-01-19 31 views
9

在我的项目,我有一个模型,你可以在这里看到我的模型的一部分:验证错误:“对”的值无效<<属性名称>>

public class CheckoutModel 
{ 
    public bool OtherPlace { get; set; } 

    [RequiredIf("OtherPlace", true, ErrorMessage = " ")] 
    public string OtherPlaceFullName { get; set; } 

    [RequiredIf("OtherPlace", true, ErrorMessage = " ")] 
    public int OtherPlaceProvinceId { get; set; } 

    [RequiredIf("OtherPlace", true, ErrorMessage = " ")] 
    public string OtherPlaceCity { get; set; } 
} 

我用RequiredIf属性来验证我的模型看来,

if (!ViewData.ModelState.IsValid) 
    { 
     @Html.ValidationSummary(false) 
    } 

我填我的表格的所有财产,但我得到下面的验证错误,当OtherPlaceProvinceId不填充。

值'on'对于OtherPlace无效。

UPDATE:控制器是在这里:

[HttpGet] 
    public ActionResult CheckoutAccount() 
    { 
     var model = OrderManager.Instance.GetCheckoutAccount(); 
     return View("_CheckoutAccount", model); 
    } 

    [HttpPost] 
    public ActionResult CheckoutAccount(CheckoutAccountModel model) 
    { 
     return View("_CheckoutAccount", model); 
    } 
+0

你能张贴您的控制器? – mituw16

+0

@ mituw16我张贴它。 – user3206982

+0

@ mituw16你看到我的控制器了吗? – user3206982

回答

0

你应该OtherPlaceProvinceId从int更改为int?

public int? OtherPlaceProvinceId { get; set; } 
+2

只有当您可以为此字段发布空白值时才需要这个 –

27

是OtherPlace一个复选框?如果复选框的默认值是on,如果不是&,则为空。 ModelBinder不理解这一点。

与此ASP.Net预订,如果您使用的助手,这样做:

<input type="checkbox" name="OtherPlace" value="true"/> 
<input type="hidden" name="OtherPlace" value="false"/> 

的模型绑定器现在将计算出的复选框的选中了与否,将其转换为一个布尔&将其绑定到你的模型。

你也可以使用与真/假值

+1

在asp核心中,我不需要添加隐藏字段。 – frostymarvelous

0

单选按钮分享我的情况和解决方案.. 在我来说,我是路过的模型使用jQuery(阿贾克斯后),控制器..

<input type="checkbox" id="OtherPlace" name="OtherPlace" value="true"/> 

的错误是,我得到 “VAL()” OtherPlace的,而不是经过财产

错误:

var otherPlace = $('#OtherPlace').val(); 

正确:

var otherPlaces = $('#OtherPlace').prop('checked'); 

我希望这可以帮助

相关问题