我站好了。 mhapps提供的答案就像一個魅力。這是最後的答案。我引用他:
我遇到了這個問題,爲了快速解決問題,我重新創建了上面的驗證摘要,並使用ViewBag通過引用有序字段名稱的數組以正確的順序存儲錯誤。不是特別好,但是當時我能想到的最快的事情。剃刀/ MVC3。
控制器代碼:
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>
}