[英]FileExtensions attribute of DataAnnotations not working in MVC
[英]DataAnnotations DisplayAttributes Order property is not working in MVC
我在模型對象中設置DataAnnotations DisplayAttributes Order屬性的值。 但是,它似乎不起作用。
我使用的是.Net Framework 4.7和MVC5。按照下面的鏈接,它應該可以工作。
[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,因此我使用負值將其設置為所需的順序。 無論我指定什么訂單權重,驗證消息始終以模型中屬性聲明的順序顯示。
有什么建議或建議嗎?
提前致謝。
DisplayAttribute控制顯示中列的順序,而不是驗證消息的順序。
您可以嘗試將錯誤消息放在控件旁邊,如從控制器asp.net mvc 5在視圖上的“顯示錯誤消息”中所述。
這有助於重新排列錯誤消息的順序。
@ 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>
}
希望這對其他人有幫助。 謝謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.