كيف يمكنك الذهاب حول التعامل مع AJAX ونموذج ملزم عند تشارك أنواع معقدة؟

StackOverflow https://stackoverflow.com/questions/1138115

سؤال

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

public ActionResult Create(Person personToCreate) {
    //Create person here
}

كما ترون، هذه الطريقة تعتمد على نموذج ملزم. وبعد هذا يجعل الطريقة منظف الكثير ... ومع ذلك، فإن هذا يعني أنه عندما يقوم AJAX بإجراء مكالمة، يجب أن يوفر جميع المتغيرات التي لا تكون غير قابلة للاطلاع في DB.

لذلك، إذا كان لدي جدول يسمى Person التي لها متغيرات:

firstName varchar(25) not-null
lastName  varchar(25) not-null
myPet     int         not-null <-- This is a foreign key

ثم فئة كيان إطار العمل، Person, ، تم إنشاؤها ستكون مشابهة ل:

public class Person {
   public string firstName { get; set; }
   public string lastName { get; set; }
   public Pet myPet { get; set; }
}

نظرا لأن أي من المتغيرات قد تكون فارغة (كما هو محدد في DB) وهذا يعني أن مكالمة AJAX يجب أن تزود string firstName, string lastName, Pet myPet. وبعد لكن جافا سكريبت لا تستطيع توفير الحيوانات الأليفة ...

لذلك ليس لدي سوى خياران (وأنا أعرف):

  1. السماح للمكيب أن تكون فارغة في DB

  2. قم بإنشاء فئة "تملق" تمثل الشخص الذي لا يتطلب كائن الحيوانات الأليفة ...

بمعنى آخر:

public class SimplePerson {
    public string firstName { get; set; }
    public string lastName { get; set; }
    public string myPetName { get; set; }
}

المشكلة مع الخيار الأول هي أنه يبدو من الغريب تعديل DB ... بالتأكيد خطأ في ذلك لأنه يسمح بالأشياء التي لا ينبغي أن تكون ...

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

هل يمكن لأي شخص أن يفكر في أي خيارات أفضل، أو إعطاء التفكير في سبب وجود خيار واحد أفضل من الآخر؟

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

المحلول

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

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