لا يمكن الوصول إلى معرف التحكم في التعليمات البرمجية

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

سؤال

لدي التعليمات البرمجية التالية في صفحة ASPX الخاصة بي:

 <asp:Button runat="server" ID="myButton" Text="hello" />

وهذا في الرمز الخاص بي وراء:

protected void Page_Load(object sender, EventArgs e)
{ 
    myButton.Text = "bye"; 
}

لسبب ما يلتقط IntelliSense معرف "Mybutton" في الكود الخارف ولكن عندما يجمع ذلك

لا يمكن أن تبني لأنه لا يتعرف عليه!

صفحتي هي صفحة ASPX الافتراضية التي تستخدم صفحة رئيسية، يوجد الزر داخل عنصر تحكم محتوى ويتم تعيين جميعها لتشغيل الخادم بشكل صحيح، يتم تشغيل الصفحة ويعرض بشكل جيد باستثناء مشكلة دقة الزر "هذه"!

أيه أفكار؟

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

المحلول

أصدرت مثل ملف المصمم الخاص بك (Pagename.designer.cs) قد حصلت على افسدت بعض الشيء. سأحاول حذف الزر من صفحتك وإضافةه مرة أخرى.

نصائح أخرى

إذا كان الزر داخل حاوية تسمية مثل مكرر فلن تكون قادرا على استخدامه من هذا القبيل. بدلا من ذلك، عليك أن تفعل شيئا مثل هذا:

Button myButton = (Button)Container.FindControl("myButton");
myButton.Text = "bye";

لقد واجهت نفس المشكلة، أولا كنت أحاول معرفة ما هو الخطأ في ملف My Designer.cs الخاص بي. ولكن بعد أن أدركت أنه بالنسبة لمركبات الويب الخاصة بي، كنت أستخدم نسخ / لصق من WebForm الافتراضي. وبالتالي فإن المشكلة كانت، مثل حامي قال المرء تأكد من التحقق من خاصية Weherit ofpage:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="InputValidation._Default" %>

لقد وجدت حلا بسيطا لهذه الحالة.

ما عليك سوى فتح ملف المصمم وإضافة خط يتوافق مع عنصر تحكم UI الخاص بك.

protected global::System.Web.UI.WebControls.Button myButton;

أين mybutton. يكون Id من سيطرتك.

واجهت المشكلة ولاحظت ذلك Designer.cs تم استبعاد الملفات من مشروعي.
حاول البحث عنها تشمل إلى مشروعك مرة أخرى.
حظا طيبا وفقك الله

أعلم أن المشكلة قد تم حلها، ولكن عندما كان لدي مشكلة مماثلة، عندما قمت بتحويل WebIaplication من C # إلى VB - قمت بحل هذا عن طريق إضافة مساحة الاسم X / End Namespace

كان لدي نفس المشكلة اليوم وفي حالتي كان الحل:

  • اذهب إلى: C:\Users\lenovo\AppData\Local\Temp\Temporary ASP.NET Files\
  • حذف Temporary ASP.NET Files مجلد.

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

كما mdresser المذكورة، يجدد ملف المصمم بشكل جيد قد يهتم بالمشكلة. فقط تأكد من حفظ صفحة ASPX أولا.

تأكد من عدم وجود ملفات تحاول بطريق الخطأ ترثها أو تحديد نفس الفئة (الجزئية). يمكن أن تكون هذه الملفات لا علاقة لها تماما بمكان ظهور الخطأ بالفعل!

لقد مضى وقت طويل. Buuuut كنت تواجه هذه المشكلة نفسها اليوم، لذلك يبدو من الأوان أبدا. بالنسبة لي كان يحدث سبب TextBox كان داخل شكل غير ملماة. ثم قمت بتعيين معرف إلى النموذج ويمكنني acess TextBox مثله: idForm.idTextBox.ToString(). وبعد أعتقد أنه سيحدث نفسه مع button.

المشكلة هل قد يكون لديك ملفات ASPX متعددة مع CodeFile في نقاط توجيه الصفحة في نفس ملف CodeBehind. إنه يتوقع أن يوجد عنصر التحكم نفسه في جميع ملف ASPX المرتبط به بنفس الرمز خلفه وبالتالي رمي خطأ في الترجمة.

تحقق من مساحة الاسم في جميع الملفات الثلاثة. وبعد في بعض الأحيان يكون هناك تباين بين اسم مساحة الاسم في ملف Designer.cs والملفتين الآخرين. تأكد من التحقق من تطابق اسم اسم المساحة هذا في جميع الملفات الثلاثة

فقط قم بتغيير خاصية Weherit بموجب علامة الصفحة

    <% Page inherit = "Project_Name.otherform" 

تغييره إلى

    <% Page inherit = "Project_Name.YourForm"

وسترى في form2.aspx.desginer.cs يتم تغيير اسم الفصل أيضا وتصحيحها.

دعني أوضح: دعنا نقول أن لديك 2 أشكال الويب Test1.aspx و Test2.aspx. قمت بنسخ بعض الكود من Test1.aspx إلى Test2.aspx، وسيستخدم ملف Test2.aspx الخاص بك <٪ صفحة الصفحة مثل:

    <% Page inherit = "Project_Name.test1"

التي كان من المفترض أن تكون على النحو التالي:

    <% Page inherit = "Project_Name.test2"

نظرا لأنه سيتم تغيير اسم فئة Test2.aspx.designer.cs تلقائيا إلى Test1.aspx.designer.cs كما هو ملف تم إنشاؤه للنظام ولن تكون غير قادر على استخدام معرفات التحكم الخاصة بك.

بعد تصحيح خاصية Woherit الخاصة بك وحفظ وفتح Test2.aspx.designer.cs للتحقق وسترى أنه يتم تغيير اسم الفصل أيضا. سيكون مثل:

    public partial class test1
    {
     ...

تغير إلى

    public partial class test2
    {
    ... 

شكرا لي في وقت لاحق؛)

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