سؤال

أنا بناء ASP.Net MVC الموقع.بدلا من أن يكون كل شيء في مشروع واحد ، لقد قررت فصل ويب, نموذج تحكم إلى مشاريع مختلفة في نفس الحل ، مرجع بعضها البعض.

المراجع يذهب مثل هذا:

ويب ---[المراجع]---> وحدة التحكم ---[المراجع]---> نموذج

الآن أنا أريد أن أضيف 2 أساليب مخصصة إلى HtmlHelper فئة تسمى "IncludeScript" و "IncludeStyle".كل منهما اتخاذ سلسلة واحدة المعلمة ، وتوليد النص أو الارتباط الوسم على التوالي.

لقد خلق موسع فئة ، وفقا الوثائق على شبكة الإنترنت ، كتب اثنين من أساليب ترجمة التطبيق.

الآن عندما أذهب إلى الجمهور.الصفحة الرئيسية (الذي هو بلدي الرئيسية ماستر-صفحة واحدة من الأماكن التي كنت تنوي استخدام هذه الأساليب) ، أستطيع أن أدخل رمز مثل أدناه:

<%= Html.IncludeScript("\js\jquery.js") %>

IntelliSense تلتقط IncludeScript طريقة ويظهر لي جملة ما يرام.لذا أتوقع أن كل شيء يجب أن تعمل.

لكنه لا.

كل ما يجمع ، ولكن بمجرد تشغيل التطبيق ، أحصل على خطأ وقت التشغيل التالية من خط 14 من الافتراضي.aspx.cs:

c:\\Projects\\PhoneReel\\PhoneReel.Web\\Views\\Shared\\Public.Master(11): error CS0117: 'System.Web.Mvc.HtmlHelper' does not contain a definition for 'IncludeScript'

هنا السطر من التعليمة البرمجية الخطأ يحدث على:

httpHandler.ProcessRequest(HttpContext.Current);

أي أفكار أو ما يمكن أن تذهب الخطأ هنا ؟

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

المحلول

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

<%@ Import Namespace="MyRootNamespace.NamespaceForMyHtmlHelperExtensions"%>

وأو هذا في القسم بمساحات التكوين الويب الخاص بك:

<add namespace="MyRootNamespace.NamespaceForMyHtmlHelperExtensions"/>

نصائح أخرى

إذا كنت تستخدم بقوة كتبته آراء و طريقة التمديد هو تمديد HtmlHelper<object>, إنه لن تجد التمديد.يجب أن إنشاء عامة موسع تمديد HtmlHelper<T>.

public static string IncludeScript<T>(this HtmlHelper<T> html, string url) {
   return "<script type=\"text/javascript\" src=\"" + url + "\"></script>";
}

ثم سترى موسع طريقة تظهر.

آمل أن يساعد.

تأكد من أن يكون هناك توجيه الاستيراد لالتمديدات الخاصة بك وسائل مساحة في الصفحة الخاصة بك.

وخلاف ذلك، قد يكون البصرية ستوديو قادرا على رؤية ولكن موقع الويب الخاص بك لن تكون قادرة على.

هل أنت متأكد من تعيين مترجم إلى الإطار الصافي 3.5؟ هذا ما حدث لي عندما كنت غير قصد تعيين مترجم إلى الإطار الصافي 2.0

في طريقة IncludeScript التأكد من أن ما يتم تمديد غير System.Web.Mvc.HtmlHelper. فمن الممكن وجود HtmlHelper في بعض أسماء أخرى.

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