سؤال

ولدي كائن عنوان تعريفها ببساطة على النحو التالي:

public class Address
{
    public string StreetNumber { get; set; }
    public string StreetAddress { get; set; }
    public string City { get; set; }
    public string PostalCode { get; set; }
}

وبسيطة إلى حد ما. وبناء على نصيحة جوابا على سؤال href="https://stackoverflow.com/questions/1401796/idataerrorinfo-in-winforms"> سألت، وأنا أشير هنا إلى <لأ href = "HTTP: //www.codegod.de/WebAppCodeGod/objectdatasource-and-idataerrorinfo-with-winforms-AID427.aspx "يختلط =" نوفولو noreferrer "> هذا بلوق وظيفة عندما ربط البيانات UI جهدي لكائن من نوع الشخص (الذي يحتوي على حقل عنوان MailingAddress).

والمشكلة هي أن أسلوب واجهة IDataError لا التحقق من صحة أي من خصائص نوع العناوين.

public string this[string columnName]
{
    get
    {
        string result = null;

        // the following works fine
        if(columnName == "FirstName")
        {
            if (string.IsNullOrEmpty(this.FirstName))
                result = "First name cannot be blank.";
        }
        // the following does not run 
        // mostly because I don't know what the columnName should be
        else if (columnName == "NotSureWhatToPutHere")
        {
            if (!Util.IsValidPostalCode(this.MailingAddress.PostalCode))
                result = "Postal code is not in a know format.";
        }
        return result;
    }
}

وهكذا، من الواضح أنني لا أعرف ماذا سيكون اسم العمود ... لقد خرج من ذلك وأنها لم تكن أبدا أي شيء آخر من أي من الممتلكات العامة (من أنواع الجوهرية). حتى لقد حاولت تشغيل وكسر في عبارة مثل:

if (columnName.Contains("Mailing") || columnName.Contains("Postal"))
    System.Windows.Forms.MessageBox.Show(columnName);

وجميع من دون جدوى.

هل هناك شيء أنا في عداد المفقودين؟

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

المحلول

وتحتاج إلى تعريف IErrorInfo على كافة الفئات التي تريد توفير رسائل الخطأ.

نصائح أخرى

ونلقي نظرة على جوابي هنا .

وهذا ما يفسر كيفية استخدام modelbinder لإضافة "على مستوى الفئة 'التحقق من النموذج الخاص بك دون الحاجة إلى استخدام IDataError - والتي كما رأيتم هنا يمكن أن يكون أخرق للغاية. لا يزال يتيح لك استخدام [مطلوب] سمات أو سمات أي التحقق من صحة مخصصة الآخرين لديك، ولكن يسمح لك بإضافة أو إزالة الأخطاء نموذج الفردية. لمعرفة المزيد عن كيفية استخدام التعليقات التوضيحية البيانات أنا أوصي <لأ href = "http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx" يختلط = "نوفولو noreferrer"> هذا المنصب من سكوت قو .

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