[英]What does [Required] do?
我在網上沒有發現[Required]的實際功能。 msdn-article根本不是探索性的。
static class Program
{
public static Main()
{
var vustomer = new CustomerClass();
}
}
public class CustomerClass
{
public string m_FirstName;
[Required]
public string m_LastName;
}
據我了解,這應該引發異常,因為m_LastName是必需的,但未設置。 但是我沒有。 我不知道這有什么好處,實際上沒有做。
與所有其他屬性一樣, RequiredAttribute
除了注釋某些內容(在這種情況下,是類型的字段)之外,本身不會執行任何操作。 完全由使用該類型的應用程序來檢測屬性的存在並做出相應的響應。
您的示例程序不會執行此操作,因此該屬性沒有任何可見的效果。 諸如ASP.NET MVC和WPF之類的某些框架會檢查並響應該屬性的存在。
Validator
類使用此屬性添加基於從ValidationAttribute
繼承的任何類型的驗證錯誤。 例如,這可用於MVC模型驗證 。
有關RequiredAttribute
文檔:
指定需要一個數據字段值。
但是,此驗證通常僅在UI層中執行。 它不會“烘焙”到構造函數或其他低級用法中。 如果您想手動觸發驗證,則可以執行以下操作:
var customer = new CustomerClass();
var context = new ValidationContext(customer, serviceProvider: null, items: null);
var results = new List<ValidationResult>();
var isValid = Validator.TryValidateObject(customer, context, results);
if (!isValid)
{
foreach (var validationResult in results)
{
Console.WriteLine(validationResult.ErrorMessage);
}
}
為了增加當前的答案,以下是一些我可以想到的實際用途:
這是一些用途,但您不僅限於此。
(1) 注意:例如,如果您的屬性是一個int並用Required進行裝飾,則模型狀態永遠不會處於無效狀態。 對於此用例,應使用Nullable屬性。
在C#中,屬性幾乎是對類和屬性的修飾。
除了一些與安全性相關的屬性外,大多數屬性什么都不做。 它們被更高級別的框架用來做某事。
對於ASP.NET 4 MVC,僅當對象是請求的一部分時,該屬性才用於生成錯誤。
如果要在任何其他環境中使用該屬性,則必須編寫代碼進行檢查。
它不會從普通的舊public static void Main()
做任何事情
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.