Asp.net-Mvc

專注於 ASP.NET MVC 模型錯誤

  • January 11, 2015

我有一個模型可以進行一些驗證檢查並將錯誤添加到 ModelState:

ViewData.ModelState.AddModelError("mycontrol", "message")

它們在視圖端顯示得很好,但是有沒有辦法將焦點設置到與驗證消息對應的控制項上?現在,頁面刷新並停留在頁面的頂部,所以如果錯誤出現在頁面的末尾,使用者就不清楚發生了什麼。

注意:另一種解決方案是 ValidationSummary 在頁面頂部顯示錯誤列表,但我一直無法讓它顯示任何內容。我所有的錯誤都通過 ValidationMessage 顯示。

**編輯:**我發現我的 ValidationSummary 有問題。我的標記是:

<% Html.ValidationSummary()%>

應該是:

<%=Html.ValidationSummary()%>

但是,我仍然想知道如何捕捉到錯誤的欄位。

滾動到第一個輸入時出現錯誤的一些 jquery 優點。棘手的一點是,您必須在呼叫 focus() 之前獲取底層 DOM 元素,因為 jQuery 對像上的 focus() 方法會觸發焦點事件,而不是將焦點賦予元素。

<script type='text/javascript'>
   $(document).ready( function()
   {
      var input = $('.input-validation-error:first');

      if(input)
      {
          input.focus();
      }
   });
</script>

您可以使用 JavaScript 在頁面上查找添加了 MVC 驗證 HTML 類 (input-validation-error) 的輸入元素,並將克拉移到第一個。儘管我還沒有測試過,但 / 應該 / 將螢幕移動到該元素。

諸如 jQuery 之類的 JS 庫將使這一切變得簡單。

引用自:https://stackoverflow.com/questions/725604