DataType (DataType. *) ใช้ทำอะไร? [ซ้ำ]

Sep 09 2020

ฉันใช้แอตทริบิวต์ข้อมูลเช่น[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; }
}

คำตอบ

3 CodeCaster Sep 09 2020 at 05:20

แอตทริบิวต์เป็นเพียงคำอธิบายประกอบ (บอกบางอย่างเกี่ยวกับคุณสมบัติ แต่ไม่ได้ทำอะไรด้วยตัวเอง) และจัดทำเป็นเอกสารดังนี้:

แสดงถึงการแจงนับชนิดข้อมูลที่เกี่ยวข้องกับฟิลด์ข้อมูลและพารามิเตอร์

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 ใช้สำหรับการแสดงผลแอตทริบิวต์เพื่อให้เบราว์เซอร์สามารถแสดงการตรวจสอบความถูกต้องและการควบคุมการเลือก (เช่นตัวเลือกวันที่, การป้อนตัวเลข, ... )

1 HMZ Sep 09 2020 at 05:25

นอกเหนือจากสิ่งที่ @codecaster กล่าวว่าEmailAddressแอตทริบิวต์มาจากDataTypeAttributeและเพิ่มการตรวจสอบฝั่งเซิร์ฟเวอร์ในขณะที่DataTypeแอตทริบิวต์กำหนดประเภทอินพุตเท่านั้น

ดังนั้นEmailAddressแอตทริบิวต์จึงให้ฟังก์ชันทั้งสองอย่างแก่คุณ