هل يمكنني تسجيل موثق نموذج مخصص في مكان ما غير Global.asax؟

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

  •  27-09-2019
  •  | 
  •  

سؤال

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

تستطيع أيضاً ضع هذا الموثق المخصص المسؤول عن جميع أطراف البيانات الخاصة بك عن طريق تسجيله في Global.asax

هل من الممكن إجراء هذه التسجيلات في نطاق أصغر من نظام وحدة التحكم؟ إذا كان الأمر كذلك ، هل هناك أي سبب لتجنب القيام بذلك خارج Global.asax mvcapplication (على سبيل المثال ، أسباب الأداء)؟

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

المحلول

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

[ModelBinder(typeof(SomeEditorModelModelBinder))]
public class SomeEditorModel {
    // display model goes here
}
public class SomeEditorModelModelBinder : DefaultModelBinder {
    // custom model binder for said model goes here
}

على الرغم من أنه لم يكن ما كنت أبحث عنه تمامًا ، إلا أنه أكثر تحديداً من تسجيله لوحدة التحكم أو طريقة تحكم.

تحديث

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

public ActionResult SomeMethod([ModelBinder(typeof(SomeEditorModelBinder))]SomeEditorModel model) { ... }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top