سؤال

لفة معي وتخيل المثال التالي:

Public ViewResult GiveMeFruit(int personId, string personName, int personAge, int fruitId){
    Person person = PersonService.GetPerson(personId);
    person.Name = personName;
    person.Age = age;
    person.Fruits.Add(FruitService.GetFruit(fruitId));
    ViewData.Person = person;
    View(ViewData);
}

يجب أن يتم ذلك بشكل أفضل مثل

Public ViewResult GiveMeFruit(Person person, IFruit fruit){
    person.Fruits.Add(fruit);
    ViewData.Person = person;
    View(ViewData);
}

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

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

المحلول

أعتقد أنه يجب أن يذهب مثل هذا:

<input type="text" name="person.Name" value="" />
<input type="text" name="person.Age" value="" />
<input type="text" name="fruit.Property1" value="" />
<input type="text" name="fruit.Property2" value="" />

للمجموعات:

<input type="text" name="fruit[0].Property1" value="" />
<input type="text" name="fruit[0].Property2" value="" />
<input type="text" name="fruit[1].Property1" value="" />
<input type="text" name="fruit[1].Property2" value="" />

كما هو الحال في هذا السؤال.

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