DataType (DataType. *) ใช้ทำอะไร? [ซ้ำ]
ฉันใช้แอตทริบิวต์ข้อมูลเช่น[EmailAddress]และ[DatabaseGenerated(DatabaseGeneratedOption.None)]สำหรับการตรวจสอบความถูกต้องทางฝั่งเซิร์ฟเวอร์ใน asp.net core mvc และสำหรับการแมปใน Entity Framework Core แต่ไม่เคยDataType(DataType.Example)ฉันพยายามค้นหา แต่ฉันยังไม่เข้าใจแนวคิดหรือวัตถุประสงค์ของมัน
ดังนั้นสิ่งที่ฉันกำลังมองหาคือคำอธิบายพร้อมตัวอย่างเกี่ยวกับการใช้งานจริง คุณสามารถใช้ตัวอย่างต่อไปนี้เป็นข้อมูลอ้างอิง
public class ProvidingContext
{
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[DataType(DataType.PhoneNumber)]
public string PhoneNumber { get; set; }
[DataType(DataType.Url)]
public string Url { get; set; }
[DataType(DataType.Currency)]
public double Price { get; set; }
}
คำตอบ
แอตทริบิวต์เป็นเพียงคำอธิบายประกอบ (บอกบางอย่างเกี่ยวกับคุณสมบัติ แต่ไม่ได้ทำอะไรด้วยตัวเอง) และจัดทำเป็นเอกสารดังนี้:
แสดงถึงการแจงนับชนิดข้อมูลที่เกี่ยวข้องกับฟิลด์ข้อมูลและพารามิเตอร์
MVC ทำอะไรกับมันไม่มีเอกสารจริงๆ มีบทช่วยสอน MVC อย่างเป็นทางการที่อธิบายการใช้งานบางส่วนแม้ว่า :
แอตทริบิวต์ DataType ให้คำแนะนำสำหรับเอ็นจิ้นมุมมองในการจัดรูปแบบข้อมูล (และจัดหาองค์ประกอบ / แอตทริบิวต์เช่น URL และสำหรับอีเมลคุณสามารถใช้แอตทริบิวต์ RegularExpression เพื่อตรวจสอบความถูกต้องของรูปแบบของข้อมูลแอตทริบิวต์ DataType ใช้เพื่อระบุ ประเภทข้อมูลที่เฉพาะเจาะจงมากกว่าชนิดภายในฐานข้อมูลไม่ใช่แอตทริบิวต์การตรวจสอบความถูกต้องในกรณีนี้เราต้องการติดตามวันที่เท่านั้นไม่ใช่เวลา
DataType Enumeration จัดเตรียมข้อมูลหลายประเภทเช่น Date, Time, PhoneNumber, Currency, EmailAddress และอื่น ๆ แอตทริบิวต์ DataType ยังสามารถเปิดใช้งานแอปพลิเคชันเพื่อจัดหาคุณลักษณะเฉพาะประเภทโดยอัตโนมัติ ตัวอย่างเช่นสามารถสร้างลิงก์ mailto: สำหรับ DataType EmailAddress และสามารถระบุตัวเลือกวันที่สำหรับ DataType.Date ในเบราว์เซอร์ที่รองรับ HTML5
แอตทริบิวต์ DataType ปล่อยแอตทริบิวต์ HTML 5 data- (แดชข้อมูลที่ออกเสียง) ซึ่งเบราว์เซอร์ HTML 5 สามารถเข้าใจได้ แอตทริบิวต์ DataType ไม่มีการตรวจสอบความถูกต้องใด ๆ
ดูสิ่งนี้ด้วย:
- DataTypeAttribute บนโมเดลทำการตรวจสอบความถูกต้องใน MVC 3 หรือไม่
- EmailAddress หรือ DataType แอตทริบิวต์อีเมล
ดังนั้น: Razor ใช้สำหรับการแสดงผลแอตทริบิวต์เพื่อให้เบราว์เซอร์สามารถแสดงการตรวจสอบความถูกต้องและการควบคุมการเลือก (เช่นตัวเลือกวันที่, การป้อนตัวเลข, ... )
นอกเหนือจากสิ่งที่ @codecaster กล่าวว่าEmailAddressแอตทริบิวต์มาจากDataTypeAttributeและเพิ่มการตรวจสอบฝั่งเซิร์ฟเวอร์ในขณะที่DataTypeแอตทริบิวต์กำหนดประเภทอินพุตเท่านั้น
ดังนั้นEmailAddressแอตทริบิวต์จึงให้ฟังก์ชันทั้งสองอย่างแก่คุณ