Свойство DataAnnotations DisplayAttributes не работает в MVC - PullRequest
0 голосов
/ 25 января 2019

Я устанавливаю значения свойства DataAnnotations DisplayAttributes Order в моем объекте модели.Однако, похоже, что он не работает.

Я на .Net Framework 4.7 и MVC 5. Согласно приведенной ниже ссылке, он должен работать.

https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.dataannotations.displayattribute.order?view=netframework-4.7.2

    [Required(ErrorMessage = "Case is required.")]
    [Display(Name = "Case", Order = -98)]
    public int CaseId { get; set; }

    [Required(ErrorMessage = "Phase is required.")]
    [Display(Name = "Phase", Order = -99)]
    public int PhaseId { get; set; }

Так как вес заказа по умолчанию равен 0, я использовал отрицательные значения, чтобы установить его в желаемом порядке.Независимо от того, какой вес заказа указан, сообщения проверки всегда отображаются в порядке объявления свойства в модели.

Любые предложения или предложения, пожалуйста?

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 25 января 2019

Это помогло изменить порядок сообщений об ошибках.

@Html.ValidationSummary () - как установить порядок сообщений об ошибках

Код контроллера:

   List<string> fieldOrder = new List<string>(new string[] { 
    "Firstname", "Surname", "Telephone", "Mobile", "EmailAddress" })
   .Select(f => f.ToLower()).ToList();

   ViewBag.SortedErrors = ModelState
    .Select(m => new { Order = fieldOrder.IndexOf(m.Key.ToLower()), Error = m.Value})
    .OrderBy(m => m.Order)
    .SelectMany(m => m.Error.Errors.Select(e => e.ErrorMessage))
    .ToArray();

Тогда в представлении:

@if (!ViewData.ModelState.IsValid)
{
   <div class="validation-summary-errors">  
    <ul>
      @foreach (string sortedError in ViewBag.SortedErrors)
      {
         <li>@sortedError</li> 
      }
    </ul>
   </div>
}

Надеюсь, это поможет кому-то еще.Спасибо!

0 голосов
/ 25 января 2019

DisplayAttribute управляет порядком столбцов на дисплее, а не порядком сообщений проверки.

Вы можете попробовать поместить сообщения об ошибках рядом с элементами управления, как описано в Отображение сообщения об ошибке на виде с контроллера asp.net mvc 5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...