سؤال

لا أستطيع معرفة ما أفتقده في الكود التالي.لدي طريقة يجب أن تضيف ملحقًا مساعدًا (وهميًا):

Imports System.Runtime.CompilerServices

Namespace HtmlHelpers

    Public Module HelpExtensions

        <Extension()> _
        Public Function HelpMe(ByVal HtmlHelper As HtmlHelper) As String
            Return "<a>HELP</a>"
        End Function

    End Module

End Namespace

وجهة نظري تبدو كالتالي:

<%@ Page Language="VB" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

<%@ Import Namespace="HtmlHelpers" %>
<asp:Content ID="indexContent" ContentPlaceHolderID="body" runat="server">
    <%=Html.HelpMe()%>
</asp:Content>

لكن هذا يعطيني الخطأ التالي:

'HelpMe' is not a member of 'System.Web.Mvc.HtmlHelper'.

ما الخطأ الذي افعله؟

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

المحلول

ولا يدري لماذا التوجيه استيراد المجرد لا تفعل خدعة، لكنه أضاف I

<add namespace="MyProject.HtmlHelpers"/>

وإلى قسم <namespaces> من الملف web.config وانها تعمل الآن. ربما لو كنت قد فعلت

<%@ Import Namespace="MyProject.HtmlHelpers" %>

وكان قد عمل كذلك؟

نصائح أخرى

هل حاولت إعادة بناء الحل الخاص بك قبل محاولة استخدام الأسلوب تمديد؟ لقد كان علي أن أفعل ذلك مع VB.NET حتى يتسنى للمترجم أن تلتقط وجود طرق الإرشاد بلدي.

أعتقد أنني وجدت الحل للتو.

يجب أن تكون الوحدات النمطية لمساعدك موجودة في App_Code الدليل.

وكما قال gfrizzle، إضافة مرجع مساحة الاسم إلى Web.config في المجلد المشاهدات يسمح الصفحة لعرض بشكل صحيح. ومع ذلك، واضطررت الى إعادة تشغيل العميل للحصول على التحسس للعمل بشكل صحيح. وأود أيضا أن أضيف صراحة البيانات Import للمساحات التي تم بالفعل المستوردة عالميا إلى ملف مع وحدة التمديد.

وعلى سبيل المثال، عندما تمتد System.Web.Mvc.HtmlHelper كان لي أن أضيف خط

وImports System.Web.Mvc

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

ويمكن أن تكون المشكلة التي قمت بتثبيتها على حد سواء MVC2 وMVC3. إذا كان الأمر كذلك، عند كتابة مخصص HTMLHelper مع VB.NET البصرية ستوديو خطأ إعلان رمي "YourClass" ليست عضوا في "System.Web.Mvc.HtmlHelper".

ولكن إذا قمت بتشغيل الصفحة أنه يعمل بشكل جيد.

وهذا هو الحل: http://forums.asp.net/t/1694828.aspx/1

والحل 1) ترقية المشروع الخاص بك إلى MVC3 الحل 2) إلغاء MVC3 حل 3) إطار تغيير الصافي إلى 3.5 بدلا من 4.0 (تعطيل MVC3) حل 4) كتابة التعليمات البرمجية في C #، وسوف لا يكون لديك أي مشكلة

وماركو

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