سؤال

لدي نموذجان محرران: واحد من أجل عشري، وواحد من أجل عشري؟(nullable)

ولكن عندما يكون لدي عشري نطئ في النموذج الخاص بي، فإنه يحاول تحميل المحرر العادي العادي:

giveacodicetagpre.

أول واحد يعمل بشكل جيد، ويحمل قالب المحرر العشري.الشخص الثاني يحاول أيضا تحميل القالب العشري (وفشل لأنه ليس حقل عشري).

رسالة الخطأ هي:

giveacodicetagpre.

يتم الإعلان عن قوالب بلدي مثل هذا:

قالب عشري:

giveacodicetagpre.

قالب عشري Nullable:

giveacodicetagpre.

أعرف أنني أستطيع أن أجعلها تعمل عن طريق المرور في اسم القالب، على سبيل المثال

لكنني أفضل حقا أن أعمل فقط تلقائيا باستخدام النوع تماما مثل كل القوالب الأخرى.

giveacodicetagpre.

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

المحلول

بفضل Bryan لإضافة مكافأة لمحاولة الحصول على حل إيجابي، لكنني سأضطر إلى الإجابة وأقول أنني وجدت أن الإجابة ليس بالتأكيد - لا يمكنك الحصول على قالب غير قابل للانهيار نوعه. يجب عليك استخدام اسم القالب.

هذا هو الاقتباس ذي الصلة من بلوق براد ويلسون في http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html . إنه مصدر موثوق على MVC لذلك يجب أن أصدقه عندما يقول:

عند البحث عن اسم النوع، يتم استخدام اسم بسيط (I.E.، TYPE.NAME) بدون مساحة الاسم. أيضا، إذا كان النوع هو nullable، نحن نبحث عن ر (هكذا سوف تحصل على قالب منطقية سواء كنت تستخدم "bool" أو "nullable")

يذهب أيضا إلى القول

هذا يعني إذا كنت تكتب قوالب لأنواع القيمة، سوف تحتاج إلى حساب ما إذا كانت القيمة هي nullable أم لا. يمكنك استعمال ال خاصية isnullablevalueetyp modelmetadata لتحديد ما إذا كان القيمة مطلقة. سنرى مثال على ذلك أدناه مع المدمج في قالب منطقية.

لذلك نعم، هناك إجابة على هذا السؤال، ولكن لسوء الحظ، فإن الإجابة لا.

لاستخدام قالب Nullable، يجب عليك استخدام اسم القالب الخاص به:

giveacodicetagpre.

أو يمكنك استخدام قالب واحد يعالج كل من النوع غير القابل للانفصال والآخر:

giveacodicetagpre.

نصائح أخرى

من أجل إنشاء قالب لنوع Nullable، تقوم بتسمية القالب الخاص بك كنوع القيمة الأساسية ثم قم بإنشاء قالب المحرر الخاص بك بنموذج ناتج.

على سبيل المثال، أريد أن أفعل قالب للمملكة الدولية؟لقد قمت بإنشاء قالب محرر باسم "Int32.cshtml" وأستزيل Int؟كما النموذج.

يجب تسمية القالب باسم "nullable`1".نظرا لأن هذا من شأنه أن يتطابق مع أي بنية غير قابلة للغة، فيمكنك القيام بتبديل من نوع النموذج وتقديم القالب الجزئي المناسب بناء على النوع من داخل "nullable`.ascx"

لا توجد طريقة للقيام بذلك في الطريقة التي تريدها.يمكن أن يكون هناك قالب واحد فقط بسبب عشري وعشري؟ولكن يمكنك تحديدها في القالب إذا كانت القيمة التي تم تمريرها من نوع غير قابلة للنوع مثل هذا:

giveacodicetagpre.

لمزيد من التفاصيل التحقق من آخر بلوق آخر

نعم، يمكنك القيام بذلك دون تحديد القالب في HTML.Editorfor، ولكن بعد ذلك، تحتاج إلى تحديد القالب مقابل خاصية Nullable باستخدام سمة UiHint.

giveacodicetagpre.

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