0

Моей модели: -MVC Обязательной проверка не работаешь

public class instrument 
{ 
    [Display(Name = "Id")] 
    public string Id { get; set; } 

    [Display(Name = "Instrument Id")] 
    public String InstrumentId 
    { 
     get; 
     set; 
    }  

    [Display(Name = "Manufacturer"),Required(AllowEmptyStrings=false)] 
    public List<string> manufacturer 
    { 
     get; 
     set; 
    } 
..... 
..... 
} 

мой взгляд имеет эти

 <div class="form-group"> 
      @Html.LabelFor(model => model.manufacturer[0], htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.manufacturer[0], new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.manufacturer[0], "", new { @class = "text-danger" }) 
      </div> 
     </div> 

     <div class="form-group"> 
      @Html.LabelFor(model => model.manufacturer[1], htmlAttributes: new { @class = "control-label col-md-2" }) 
      <div class="col-md-10"> 
       @Html.EditorFor(model => model.manufacturer[1], new { htmlAttributes = new { @class = "form-control" } }) 
       @Html.ValidationMessageFor(model => model.manufacturer[1], "", new { @class = "text-danger" }) 
      </div> 
     </div> 

Когда я отправить форму на мой контроллер (с вне положить любое значение в обеих этих текстовых полей) Список содержит две пустые строки. Я хочу проверить их. поскольку Model.IsValid всегда выполняется, потому что у производителя есть две пустые строки.

+0

Какая фактическая проверка вы хотите ('[Обязательный]' не работает в коллекции) - вы хотите, чтобы каждый элемент в коллекции не был пустой/пустой? –

+0

есть. Я хочу это сделать. – iGod

+2

Тогда свойство 'производитель' должно быть List ' где 'Производитель' - класс, содержащий свойство (скажем)' string Name', которое украшено атрибутом '[Обязательный]'. Но вы не должны генерировать свое мнение таким образом. Вместо этого используйте цикл 'for' –

ответ

0

Вы можете использовать обязательные атрибуты для проверки вы модель как [Display(Name = "Id")] для отображения Id для всех свойств в модели

0

Производителя может иметь свой собственный класс в модели:

public class Instrument 
{ 
    [Display(Name = "Id")] 
    public string Id { get; set; } 

    [Display(Name = "Instrument Id")] 
    public String InstrumentId { get; set; }  

    public List<Manufacturer> Manufacturer { get; set; } 
} 

public class Manufacturer 
{ 
    [Display(Name = "Manufacturer")] 
    [Required(AllowEmptyStrings=false)] 
    public string Name 
    { 
     get; 
     set; 
    } 
} 

В представлении:

@Html.EditorFor(m => m.Manufacturer[0].Name, new { htmlAttributes = new { @class = "form-control" } }) 
Смежные вопросы