سؤال

أنا أستخدم فئة تم إنشاؤها كنموذج، وأتمنى أن أضيف سمات DataannoTation إلى بعض خصائصها. كما هو رمز تم إنشاؤه، لا أريد إضافة التعليقات التوضيحية مباشرة. هل هناك طريقة أخرى لإرفاقها بممتلكات؟

كنت فكر في جعل نموذج واجهة، واستخدام فئة جزئية للحصول على الفئة التي تم إنشاؤها للاشتراك في ذلك. هل هناك حل أقل تفصيلا، على افتراض أنه من شأنه أن يعمل؟

هل كانت مفيدة؟

المحلول

نعم هنالك. يجب عليك إنشاء فئة بيانات التعريف التي ستكون لها نفس الخصائص النموذج الأصلي الخاص بك، وتوصيلها بالنموذج الخاص بك بسمة Metadatatatype:

[MetadataType(typeof(MyModelMetadata))]
public partial class OriginalMyModel
{
}

public class MyModelMetadata
{
    [Required]
    public string MyProperty;  

    // ...
}

في المثال Ebove OriginalModel هي فئة النموذج المناسبة الخاصة بك، و MyModelMetadata هي فئة تستخدم فقط للحصول على خصائص التسجيل. يجب أن تحتوي MyModelmetatata على نفس الخصائص التي يحتوي عليها النموذج الخاص بك.

نصائح أخرى

يمكنك استخدام سمة Metadatatype في صفك:

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.metadatatypattribute.aspx.

في الممارسة العملية، رأيت البيانات الوصفية تخرج من المزامنة مع نموذج تم إنشاؤه بشكل متكرر، حيث يمكن أن يؤدي إلى بعض الصداع. قد ترغب في النظر في آلية التحقق من الصحة بديلة بدلا من التعليقات التوضيحية للبيانات.

لقد كنت تستخدم التحقق من الصحة, ، وهذا سهل للغاية للاستلام والبدء في استخدام. هناك حتى التحقق بطلاقة ل Xval. قطعة التكامل في التحقق من الصحة بطلاقة 2.0 (لا تزال في بيتا) التي يمكنك من خلالها أن تحضر في مشروعك للتحقق من جانب العميل.

يتيح لك التحقق من صحة بطلاقة تحديد صحتك في فئة منفصلة. كل ما تحتاج إلى القيام به هو إضافة سمة إلى الفئة التي تم إنشاؤها لإخبارها بالمصاد المفصل الذي يمكن استخدامه، والذي يمكن إنجازه من خلال فصول جزئية.

بدلا من ذلك، يمكنك إنشاء نماذج محددة للعرض تم تعيينها من طراز المجال الذي يحتوي على التعليقات التوضيحية للبيانات. في هذه الحالة، تبسيط رسم الخرائط في الخلف باستخدام شيء مثل Automapper.. وبعد ثم، إذا تغير نموذج المجال الخاص بك، فستحصل على أخطاء تجميع الوقت مقابل نهج البيانات الوصفية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top