日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET CORE RAZOR :向 Razor 页面添加验证

發布時間:2025/4/9 asp.net 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET CORE RAZOR :向 Razor 页面添加验证 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/razor-pages/validation

本部分中向?Movie?模型添加了驗證邏輯。?每當用戶創建或編輯電影時,都會強制執行驗證規則。

驗證

軟件開發的一個關鍵原則被稱為?DRY(即“不要自我重復”)。?Razor 頁面鼓勵進行僅指定一次功能的開發,且功能在整個應用中反映。?DRY 有助于減少應用中的代碼量。?DRY 使代碼更加不易出錯,且更易于測試和維護。

Razor 頁面和 Entity Framework 提供的驗證支持是 DRY 原則的極佳示例。?驗證規則在模型類中的某處以聲明方式指定,且在應用的所有位置強制執行。

將驗證規則添加到電影模型

打開 Movie.cs 文件。?DataAnnotations?提供一組內置驗證特性,可通過聲明方式應用于類或屬性。?DataAnnotations 還包含DataType?等格式特性,有助于格式設置但不提供驗證。

更新?Movie?類以使用?Required、StringLength、RegularExpression?和?Range?驗證特性。

public class Movie {public int ID { get; set; }[StringLength(60, MinimumLength = 3)][Required]public string Title { get; set; }[Display(Name = "Release Date")][DataType(DataType.Date)]public DateTime ReleaseDate { get; set; }[Range(1, 100)][DataType(DataType.Currency)]public decimal Price { get; set; }[RegularExpression(@"^[A-Z]+[a-zA-Z""'\s-]*$")][Required][StringLength(30)]public string Genre { get; set; }[RegularExpression(@"^[A-Z]+[a-zA-Z""'\s-]*$")][StringLength(5)][Required]public string Rating { get; set; } }

驗證特性用于指定模型屬性上強制執行的行為:

  • Required?和?MinimumLength?特性指示屬性必須具有一個值。?但是,用戶可以隨時輸入空格以對可以為 null 的類型進行驗證約束。?從本質上來說,需要不可以為 null 的值類型(如?decimal、int、float?和?DateTime),但不需要?Required?特性。
  • RegularExpression?特性限制用戶可以輸入的字符。?在上述代碼中,Genre?和?Rating?僅可使用字母(禁用空格、數字和特殊字符)。
  • Range?特性將值限制在指定范圍內。
  • StringLength?特性設置字符串的最大長度,且可視情況設置最小長度。

讓 ASP.NET Core 強制自動執行驗證規則有助于提升應用的可靠性。?自動驗證模型有助于保護應用,因為添加新代碼時無需手動應用它們。

Razor 頁面中的“驗證錯誤”UI

運行應用并導航到“頁面/電影”。

選擇“新建”鏈接。?使用無效值填寫表單。?當 jQuery 客戶端驗證檢測到錯誤時,會顯示一條錯誤消息。

備注

可能無法在?Price?字段中輸入小數點或逗號。?若要使?jQuery 驗證支持使用逗號(“,”)表示小數點及使用非美國英語日期格式的非英語區域設置,必須執行使應用全球化的步驟。?有關詳細信息,請參閱其他資源。?目前只能輸入整數,例如 10。

?

請注意表單如何自動呈現每個包含無效值的字段中的驗證錯誤消息。?客戶端(使用 JavaScript 和 jQuery)和服務器端(若用戶禁用 JavaScript)都必定會遇到這些錯誤。

一項重要優勢是,無需在“創建”或“編輯”頁面中更改代碼。?在模型應用 DataAnnotations 后,即已啟用驗證 UI。?本教程中自動創建的 Razor 頁面自動選取了驗證規則(使用?Movie?模型類的屬性上的驗證特性)。?使用“編輯”頁面測試驗證后,即已應用相同驗證。

存在客戶端驗證錯誤時,不會將表單數據發布到服務器。?請通過以下一種或多種方法驗證是否未發布表單數據:

  • 在?OnPostAsync?方法中放置一個斷點。?提交表單(選擇“創建”或“保存”)。?從未命中斷點。
  • 使用?Fiddler 工具。
  • 使用瀏覽器開發人員工具監視網絡流量。

服務器端驗證

在瀏覽器中禁用 JavaScript 后,提交出錯表單將發布到服務器。

(可選)測試服務器端驗證:

  • 在瀏覽器中禁用 JavaScript。?如果無法在瀏覽器中禁用 JavaScript,請嘗試其他瀏覽器。
  • 在“創建”或“編輯”頁面的?OnPostAsync?方法中設置斷點。
  • 提交帶有驗證錯誤的表單。
  • 驗證模型狀態是否無效:

if (!ModelState.IsValid){return Page();}

以下代碼顯示了之前在本教程中設定其基架的“Create.cshtml”的一部分。?它用于在“創建”和“編輯”頁面中顯示初始表單并在發生錯誤后重新顯示表單。

<form method="post"><div asp-validation-summary="ModelOnly" class="text-danger"></div><div class="form-group"><label asp-for="Movie.Title" class="control-label"></label><input asp-for="Movie.Title" class="form-control" /><span asp-validation-for="Movie.Title" class="text-danger"></span></div>

輸入標記幫助程序使用?DataAnnotations?特性并在客戶端生成 jQuery 驗證所需的 HTML 特性。?驗證標記幫助程序用于顯示驗證錯誤。?有關詳細信息,請參閱驗證。

“創建”和“編輯”頁面中沒有驗證規則。?僅可在?Movie?類中指定驗證規則和錯誤字符串。?這些驗證規則將自動應用于編輯?Movie?模型的 Razor 頁面。

需要更改驗證邏輯時,也只能在該模型中更改。?將始終在整個應用程序中應用驗證(在一處定義驗證邏輯)。?單處驗證有助于保持代碼干凈,且更易于維護和更新。

使用 DataType 特性

檢查?Movie?類。?除了一組內置的驗證特性,System.ComponentModel.DataAnnotations?命名空間還提供格式特性。?DataType?特性應用于?ReleaseDate?和?Price?屬性。

[Display(Name = "Release Date")] [DataType(DataType.Date)] public DateTime ReleaseDate { get; set; }[Range(1, 100)] [DataType(DataType.Currency)] public decimal Price { get; set; }

DataType?特性僅提供相關提示來幫助視圖引擎設置數據格式(并提供特性,例如向 URL 提供?<a>?和向電子郵件提供?<a href="mailto:EmailAddress.com">)。?使用?RegularExpression?特性驗證數據的格式。?DataType?屬性用于指定比數據庫內部類型更具體的數據類型。?DataType?特性不是驗證特性。?示例應用程序中僅顯示日期,不顯示時間。

DataType?枚舉提供了多種數據類型,例如日期、時間、電話號碼、貨幣、電子郵件地址等。?應用程序還可通過?DataType特性自動提供類型特定的功能。?例如,可為?DataType.EmailAddress?創建?mailto:?鏈接。?可在支持 HTML5 的瀏覽器中為?DataType.Date?提供日期選擇器。?DataType?特性發出 HTML 5?data-(讀作 data dash)特性供 HTML 5 瀏覽器使用。?DataType?特性不提供任何驗證。

DataType.Date?不指定顯示日期的格式。?默認情況下,數據字段根據基于服務器的?CultureInfo?的默認格式進行顯示。

DisplayFormat?特性用于顯式指定日期格式:

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] public DateTime ReleaseDate { get; set; }

ApplyFormatInEditMode?設置用于指定在顯示值進行編輯時需應用格式。?可能不希望某些字段具有此行為。?例如,在貨幣值中,可能不希望編輯 UI 中存在貨幣符號。

可單獨使用?DisplayFormat?特性,但通常建議使用?DataType?特性。?DataType?特性傳達數據的語義而不是傳達如何在屏幕上呈現數據,并提供 DisplayFormat 不具備的以下優勢:

  • 瀏覽器可啟用 HTML5 功能(例如顯示日歷控件、區域設置適用的貨幣符號、電子郵件鏈接等)
  • 默認情況下,瀏覽器將根據區域設置采用正確的格式呈現數據。
  • 借助?DataType?特性,ASP.NET Core 框架可選擇適當的字段模板來呈現數據。?單獨使用時,DisplayFormat?特性將使用字符串模板。

注意:jQuery 驗證不適用于?Range?屬性和?DateTime。?例如,以下代碼將始終顯示客戶端驗證錯誤,即便日期在指定的范圍內:

?

[Range(typeof(DateTime), "1/1/1966", "1/1/2020")]

通常,在模型中編譯固定日期是不恰當的,因此不推薦使用?Range?特性和?DateTime。

以下代碼顯示組合在一行上的特性:

?

public class Movie {public int ID { get; set; }[StringLength(60, MinimumLength = 3)]public string Title { get; set; }[Display(Name = "Release Date"), DataType(DataType.Date)]public DateTime ReleaseDate { get; set; }[RegularExpression(@"^[A-Z]+[a-zA-Z""'\s-]*$"), Required, StringLength(30)]public string Genre { get; set; }[Range(1, 100), DataType(DataType.Currency)]public decimal Price { get; set; }[RegularExpression(@"^[A-Z]+[a-zA-Z""'\s-]*$"), StringLength(5)]public string Rating { get; set; } }

?

轉載于:https://www.cnblogs.com/djd66/p/8484209.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的ASP.NET CORE RAZOR :向 Razor 页面添加验证的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲50p| 精品人妻一区二区三区四区久久 | 一区二区高清 | 69国产精品视频 | 噜噜噜精品欧美成人 | 日本三级中文字幕在线观看 | 可以看av的网址 | 亚洲爱色| 国产精品视频网址 | 白洁av| 玖玖在线观看 | 亚洲免费在线视频 | 国产女大学生av | 日韩 欧美 国产 综合 | 久久国产热 | 日韩经典第一页 | 欧美日免费 | www.av777| 一区小视频 | 涩涩屋视频在线观看 | xxxx国产片 | 激情综合网站 | 亚洲成av人片一区二区 | 丝袜 亚洲 另类 欧美 重口 | 久久久免费精品 | 日本在线视频免费 | 国模精品一区二区三区 | 国产三级国产精品国产专区50 | 夜夜嗨av一区二区三区免费区 | 国产97免费视频 | 亚洲精品视频一二三区 | 成人小视频免费 | 亚洲一区二区自拍 | 91精品国产一区二区三区蜜臀 | 久久午夜激情 | 国产一二三四在线 | 亚洲色图欧美色 | 国产国语亲子伦亲子 | a天堂中文 | 88av视频 | 国产大片一区二区 | 91看片看淫黄大片 | 啪啪的网站 | 深夜影院深a | 天天玩天天操 | 中出精品 | 亚洲精品一区在线 | 欧美性猛交xx乱大交 | 神马一区二区三区 | 日本免费在线视频观看 | 久久亚洲视频 | 精品黑人一区二区三区久久 | 91在线最新 | 国产精品入口久久 | 碰在线视频 | 日韩精品人妻一区二区中文字幕 | 欧美人与动牲交a欧美精品 欧美三级在线看 | 日韩亚洲欧美中文字幕 | 精品亚洲一区二区三区四区五区 | 97国产精品人人爽人人做 | 牛牛影视一区二区 | 欧美日韩亚洲精品一区二区 | 亚洲欧美中日韩 | 一级片视频免费观看 | 国产夫妻自拍av | jizz免费视频| 亚洲成av人片在线观看 | 亚洲av日韩av高潮潮喷无码 | xxx性欧美 | 三级av免费| 国产成人片 | 久久久亚洲精品视频 | 激情网五月天 | 999zyz玖玖资源站永久 | 伊人成人在线 | 男生插女生视频在线观看 | 欧美高清视频一区二区 | 国产绿帽刺激高潮对白 | 欧美性大战久久久久久 | 欧美人妻精品一区二区 | 欧美日韩高清一区 | 黄色网页在线免费观看 | 成人精品视频一区二区三区尤物 | 天天舔天天射天天干 | 日本免费一区二区三区四区 | 亚洲成人av免费 | 九九色综合网 | 极品少妇一区二区三区 | 欧美成人久久 | 日韩八区 | 日本视频在线免费观看 | 男女插孔视频 | 99热1| a√天堂资源 | 国产精品久久久久久免费免熟 | 欧美一级日韩 | 欧美精品在线观看视频 | 中文字幕丰满乱子伦无码专区 | fc2ppv色の美マンに中出し |