2014-01-19 11 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 от междунар в целое ?,

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"/> 

ModelBinder теперь выяснить флажок был отмечен или нет, преобразовать его в логических & привязать его к вашей модели.

Вы также можете использовать радио-кнопки с истинными/ложными значениями

+1

В ядре asp мне не нужно было добавлять скрытое поле. – frostymarvelous

0

Разделяя мое дело и решение .. В моем случае я проезжал модель для контроллера с помощью JQuery (Ajax пост) ..

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

ошибка в том, что я получал "VAL()" из OtherPlace вместо Checked собственности

Неправильно:

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

Правильно:

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

Я надеюсь, что это может помочь

Смежные вопросы