هو ASP.NET MVC 1 إلى الأمام متوافق مع ASP.NET MVC 2؟
-
18-09-2019 - |
سؤال
هل يمكنني تشغيل تطبيق MVC 1 باستخدام تجميعات MVC 2 دون عقبة؟ أنا أفهم أن بعض أدوات الحزب الثالث قد كسرت في MVC 2، ولكن دعونا نفترض أنني لا أستخدم تلك الأدوات الأخرى.
المحلول
كانت هناك كسر التغييرات.
إذا كنت ترغب في تشغيل مشروع 1.0 في 2.0، فإنه يبحث عن أشياء في أماكن مختلفة؛ لذلك يجب عليك ترحيل التطبيق إلى 2.0..
فيما يلي التغييرات التي قد تكون "استراحة" (الحالية اعتبارا من المعاينة 2):
التغييرات في المعاينة 2
المساعدون الآن عودة MvcHtmlString
هدف
من أجل الاستفادة من بناء جملة تعبير ترميز HTML الجديد في ASP.NET 4، فإن نوع الإرجاع للمساعدين HTML هو الآن MvcHtmlString
بدل من string
. وبعد لاحظ أنه إذا كنت تستخدم ASP.NET MVC 2 والمساعدين الجدد باستخدام ASP.NET 3.5، فلن تتمكن من الاستفادة من بناء جملة ترميز HTML؛ يتوفر بناء الجملة الجديد فقط عند تشغيل ASP.NET MVC 2 على ASP.NET 4.
JsonResult
يستجيب الآن فقط لطلبات نشر HTTP
من أجل تخفيف هجمات اختطاف JSON التي لديها إمكانات الكشف عن المعلومات، بشكل افتراضي، JsonResult
فئة يستجيب الآن فقط ل http POST
طلبات. AJAX الحصول على مكالمات إلى طرق العمل التي ترجع JsonResult
يجب تغيير الكائن لاستخدام ما بعد بدلا من ذلك. إذا لزم الأمر، يمكنك تجاوز هذا السلوك عن طريق ضبط الجديد JsonRequestBehavior
ممتلكات JsonResult
. وبعد لمزيد من المعلومات حول الاستغلال المحتمل، راجع بلوق نشر JSON اختطاف على مدونة Phil Haack.
نموذج خاصية نموذجية ModelBindingContext
عفا عليها الزمن
صندوق جديد ModelMetadata
تم إضافة الممتلكات إلى ModelBindingContext
صف دراسي. الخاصية الجديدة تغلق كل من النموذج و ModelType
الخصائص. على الرغم من أن Model
و ModelType
الخصائص عفا عليها الزمن، للتوافق مع المتخلفين في مجال الخصائص لا يزال العمل؛ يفوضون ModelMetadata
الممتلكات لاسترداد القيمة.
التغييرات في المعاينة 1
DefaultControllerFactory
التغييرات الفئة كسر مصانع المراقب المخصصة التي تستمد منه
يؤثر هذا التغيير على مصانع المراقب المخصصة التي تستمد من DefaultControllerFactory
وبعد تم إصلاح فئة DefaultControllerFactorlatory عن طريق إزالة RequestContext
خاصية وبدلة تمرير مثيل سياق الطلب إلى الأساليب الافتراضية المحمية GetControllerInstance
و GetControllerType
.
غالبا ما تستخدم مصانع المراقب المخصصة لتوفير حقن التبعية لتطبيقات ASP.NET MVC.
لتحديث مصانع وحدة التحكم المخصصة لدعم ASP.NET MVC 2، قم بتغيير توقيع الأسلوب أو التوقيعات لتتناسب مع التواقيع الجديدة، واستخدام معلمة طلب سياق الطلب بدلا من الخاصية.
"المنطقة" هي الآن مفتاح قيمة المسار المحجوز
تتميز سلسلة "المنطقة" في قيم الطريق الآن بمعنى خاص في ASP.NET MVC، بنفس الطريقة التي تقوم بها "وحدة التحكم" و "الإجراء". ضمنية واحدة هي أنه إذا تم توفير مساعدو HTML مع قاموس قيمة الطريق يحتوي على "منطقة"، فلن يقوم المساعدون بإلحاق "المنطقة" في سلسلة الاستعلام.
إذا كنت تستخدم ميزة المناطق، فتأكد من عدم استخدامها {area}
كجزء من عنوان URL للمسار الخاص بك.
مشاكل معروفة
يطرح مربع حوار إضافة طريقة عرض NullReferenceException عندما يتم التحقق من خانة الاختيار "إنشاء طريقة عرض مكتمة بشدة"، ويتم تحديد اختيار محتوى عرض غير "فارغ"، ويتم تحديد اسم نوع من بيانات البيانات لنوع موجود. عند تحديد اسم النوع، إما استخدام القائمة المنسدلة لتحديد اسم النوع أو اكتب اسم النوع المؤهل بالكامل. لأنواع غير موجودة، يجب عليك تعيين عرض المحتوى إلى "فارغ".
نصائح أخرى
تحقق من هذا المستند. ستتعرف على التغييرات العاجلة:http://go.microsoft.com/fwlink/؟linkid=157072.
GotCha واحد الذي ضربني هو أن جميع مجالات النموذج يتم التحقق منها الآن دائما على وظيفة.
تم وصف التغييرات براد ويلسون هنا.
ستيف أندرسون بوست بلوق يصف القضية والحل المفضل لدي (باستخدام خدمة Validator).