modelbinding لمعلمات سلسلة الاستعلام فارغة في ASP.NET MVC 2

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

سؤال

السلوك الموصوف هنا يبدو أن يكون الآن الافتراضي ل ASP.NET MVC 2 (على الأقل لمعاينة 1).

عند رسم موديل الاستعلام مثل هذا:

 ?Foo=&Bar=cat 

يحدث التوصيل التالي (على افتراض أنك تربط طراز مع خصائص سلسلة "Foo" و "شريط"

ASP.NET MVC 1.

 model.Foo = "";
 model.Bar = "cat":

ASP.NET MVC 2 (معاينة 1 من خلال RC)

 model.Foo = null;
 model.Bar = "cat":

أراد أن يعطي أي شخص يلعب مع V2 A رؤساء لأنه لم يتم ذكر ذلك في "GU-Notes.". فضولي أيضا إذا كان بإمكان أي شخص في المعرفة التعليق على ما إذا كان هذا سيكون التنفيذ النهائي أم لا؟ أنا بخير في كلتا الحالتين ولكن فقط آمل أن لا يتحولون إلى الطريق القديم! كونك شكلي سيكون أفضل.

يحرر: الدرس للتعلم من هذه النقطة هو مهما كان الإصدار الذي تتطور فيه عدم كتابة التعليمات البرمجية التي تقول foo.length == 1 لاختبار سلسلة فارغة أو foo.length> 3 للتحقق من طول الحد الأدنى. استخدم String.isnullorembery (FOO) و / أو التحقق من وجوده أولا.


تحديث: أثار هذا السؤال فضولي لماذا سيحدثون بالفعل هذا التغيير. أعتقد أنني تعثرت على الإجابة أثناء البحث عن ضوابط معطلة. يحدد المواصفات W3 HTMLالسيطرة الناجحة' كالآتي :

عنصر تحكم ناجح هو "صالح" لتقديمه. كل عنصر تحكم ناجح لديه اسم عنصر تحكم يقترن بقيمته الحالية كجزء من مجموعة بيانات النموذج المقدم. يجب تعريف عنصر تحكم ناجح ضمن عنصر النموذج ويجب أن يكون لديك اسم تحكم.

بمعنى آخر - عنصر تحكم ناجح هو واحد من شأنه أن يعود إلى الخادم كمعلمة سلسلة الاستعلام. الآن، إذا لم يكن لديك عنصر تحكم قيمة صالحة، وفقا للمواصفات:

إذا كان عنصر تحكم ليس لديه القيمة الحالية عندما يتم تقديم النموذج، لا يلزم عمل وكلاء المستخدمين علاجها كتحكم ناجح.

(بقعة لغة "مفتوحة للتفسير" هنا مع "غير مطلوبة إلى ...")

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

أعتقد أنني على الأقل على المسار الصحيح فيما يتعلق بالسبب الذي يجعله هنا - وما زال جزئيا على الأقل له علاقة بمفهوم "التحكم المجالح".

http://www.w3.org/tr/html401/interact/forms.html#h-17.13.2.

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

المحلول

NULL هو أكثر تمثيلا لما هو عليه بالفعل، وهو متوافق مع أنواع أخرى غير قابلة للنصاء إلى جانب السلسلة، لذلك أتصور أنه من خلال التصميم.

نصائح أخرى

أنا أفضل سلوك V1. كيف ستتمكن من اجتياز سلسلة فارغة في V2؟ بالإضافة إلى ذلك، مع الأخير، لا يمكنك معرفة ما إذا كانت FOO موجودة في معلمات الاستعلام أم لا.

طريقة واحدة لتكوينها هي استبدال Binder النموذج الافتراضي في V2 (أو V1) للحصول على سلوك متسق. انا افضل الفاتح بنفسي.

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