2015-03-11 3 views
1

Я показываю переключатели с использованием класса enum.mvc enum radio button обязательное поле

public enum RegisteredBy 
    { 
     [Display(Name = "Customer", Order = 0)] 
     H, 
     [Display(Name = "Dealer/Contractor", Order = 1)] 
     S, 
    } 

Когда я делаю это на своем представлении и на отправке, я не выбрал ни одной радиокнопки. Даже если он принимает значение "H". Чтобы он не показывал никаких сообщений о валидации.

@using ConsumerProductRegistration.Models; 
    @using ProductRegistration.Models.Enums; 
    @model ProductRegistration.Models.Registration 

     @Html.RadioButtonFor(m => m.RegisteredBy, RegisteredBy.H, new { id = "RegisteredByCustomer" }) 
     @Html.Label("Customer")<br /> 
     @Html.RadioButtonFor(m => m.RegisteredBy, RegisteredBy.S, new { id = "RegisteredByDealer" }) 
     @Html.Label("Dealer/Contractor") 
@Html.ValidationMessageFor(m => m.RegisteredBy) 

В модели:

public class Registration 
    { 
     [Required(ErrorMessage = "Select at least one option")] 
     [Display(Name = "Registered by*")] 
     public RegisteredBy RegisteredBy { get; set; } 
} 

Ввиду:

public ActionResult CustomerInfo(Registration registration) 
     { 
      return View(registration); 
     } 

пожалуйста предложить пользователю me.if не выбрать, мы должны показать сообщение об ошибке.

+1

Сделать собственность недействительным - 'public RegisteredBy? RegisteredBy {get; задавать; } ' –

+0

Да, он работает ... Как я могу удалить границы элементов управления (красный цвет), а для ошибок. –

+0

Не уверен, что я понимаю. Вы отметили его как '[Обязательный]', поэтому, если вы не выберите вариант, у него будет ошибка проверки. Почему вы не хотите указывать на ошибку? –

ответ

0

Тип элемента перечисления по умолчанию - int. По умолчанию первый счетчик имеет значение 0, а значение каждого последующего перечислителя увеличивается на 1.

Когда вы ничего не выбираете и не публикуете форму, значение по умолчанию 0 автоматически устанавливается (значение по умолчанию целое число).

В этом случае вы можете сделать свой объект нулевым с атрибутом [Required], который отправляет null как значение, когда ничего не выбрано. И поскольку он украшен атрибутом [Required], он даст вам необходимую ошибку проверки поля.

[Required] 
public RegisteredBy? RegisteredBy { get; set; }