سؤال

عند استخدام MVC وتحويل البيانات إلى ViewModels وهي طريقة مقبولة للقيام بذلك؟

في هذه اللحظة أنا باستخدام AutoMapper للقيام بذلك والتي تعمل بشكل جيد. ومع ذلك لم نرى في المادة بلوق (أعتقد أنه كان روب C) وجود منشئ على ViewModel التي تأخذ عدد بارامس المطلوبة ومن ثم يولد ViewModel

وعلى سبيل المثال var RetViewModel = new ViewModel(MyObject);

وهذا يبدو وكأنه وسيلة لائقة للقيام بذلك، والأفكار؟

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

المحلول

وو"الطريقة المقبولة" بشكل عام، هي الطريقة التي تناسبك.

ولقد سمعت أبدا من AutoMapper وعندما نظرت إلى ذلك، ما حصل هو أنه يخلق رسم الخرائط الكائن السحري باتباع اتفاقية معينة.

وسكرينكست في: http://www.dnrtv.com/default.aspx؟ showNum = 155

ملحوظة: شاهدت فقط ما يقرب من نصف هذا سكرينكست، حتى أفكاري على AutoMapper غير مكتملة إلى حد ما

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

وأنا استخدم الأسلوب الذي أعطى في رسالتك، وبعد ان منشئ نموذج يأخذ كائن والقيام بكل عمل.

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

مثال:

CustomViewModel myModle = new CustomViewModle
{
    Property1 = "Something",
    Property2 = 3,
    //etc..
};

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

نصائح أخرى

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

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

لا أستطيع أن أقول الطريقة التي هي أحسن، على حد سواء هي الخيارات المتاحة. أنا شخصيا أفضل أسلوب الثاني في الوقت الراهن.

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