2015-02-25 2 views
1

У меня есть кнопка на моем веб-сайте, которая не работает вообще. Каждый раз, когда я пишу сценарий внутри события кнопки в коде позади, я получаю эту ошибку:Событие нажатия кнопки не работает в коде за ASP.NET C#

Server Error in '/website.com' Application. 
    Compilation Error 
    Description: An error occurred during the compilation of a resource  
    required to service this request. Please review the following specific 
    error details and modify your source code appropriately. 

    Compiler Error Message: CS1061: 'ASP.test_aspx' does not contain a 
    definition for 'btnSubmit_Click' and no extension method 
    'btnSubmit_Click' accepting a first argument of type 'ASP.test_aspx' 
    could be found (are you missing a using directive or an assembly 
    reference?) 

Source Error: 


    Line 5: 
    Line 6: 
    Line 7: <asp:Button ID="btnSubmit" runat="server" Text="Submit" 
    OnClick="btnSubmit_Click" /> 
    Line 8: 
    Line 9: 

Код Behind

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace website 
{ 
    public partial class Test : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 

     } 

     protected void btnSubmit_Click(object sender, EventArgs e) 
     { 
      lblmsg.Text = "Hello World!"; 
     } 
    } 
} 

Источник:

<%@ Page Title="" Language="C#" MasterPageFile="~/webMaster.Master" 
    AutoEventWireup="True" CodeBehind="Test.aspx.cs" 
    Inherits="website.Test" %> 

    <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> 
    </asp:Content> 
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" 
    runat="server"> 
     <asp:Button ID="btnSubmit" runat="server" Text="Submit" 
     OnClick="btnSubmit_Click" CausesValidation="False" /> 

     <asp:Label ID="lblmsg" runat="server"></asp:Label> 
    </asp:Content> 

Это мой Test.aspx. designer.cs код:

namespace website { 
    public partial class Test { 

    /// <summary> 
    /// btnSubmit control. 
    /// </summary> 
    /// <remarks> 
    /// Auto-generated field. 
    /// To modify move field declaration from designer file to code-behind 
     file. 
    /// </remarks> 
     protected global::System.Web.UI.WebControls.Button btnSubmit; 

    /// <summary> 
    /// lblmsg control. 
    /// </summary> 
    /// <remarks> 
    /// Auto-generated field. 
    /// To modify move field declaration from designer file to code-behind 
     file. 
    /// </remarks> 
    protected global::System.Web.UI.WebControls.Label lblmsg; 
    } 
} 

Обновление:

Я решил проблему после смены CodeBehind = "Test.aspx.cs" на CodeFile = "Test.aspx.cs". Дополнительная информация CodeFile vs CodeBehind

+0

Кажется, это сообщение: 'ASP.test_aspx' против' website' (пространства имен). – EdSF

+0

Что вы имеете в виду? объясните свой комментарий, пожалуйста. – Max

ответ

1

Вы не указали третью часть требуемого кода, где событие инициализируется делегатом, такого рода вещи. Автоматически созданный код, на который мы обычно не обращаем особого внимания. См. Метод InitializeComponent() в файле Formxxx.Designer.cs.

Чтобы это было просто, я бы предложил: просто удалите обработчик события нажатия кнопки и создайте его снова с помощью Visual Studio, нажав кнопку в дизайнере. Затем все необходимые части кода создаются правильно.

+0

Я удалил старую кнопку, а затем дважды щелкнул ее с панели дизайна и создал обработчик событий, связанный с новой добавленной кнопкой, и вставил туда мой код! Я также выполнил восстановление моего решения и удалил старый файл test.aspx.designer.cs и щелкнул правой кнопкой мыши по test.aspx, чтобы преобразовать в приложение, чтобы создать нового дизайнера. Все это НЕ ПРОДОЛЖАЕТСЯ для меня! – Max

+0

Вам не нужно вставлять ничего. Просто создайте кнопку и событие в Visual Studio и установите точку останова отладчика в пустом обработчике событий. Убедитесь, что обработчик события выполняется при нажатии кнопки. Если это работает, начните вводить код в обработчик события. Но если он НЕ работает, вы должны исправить свое решение и/или проект, который может стать поврежденным. – Roland

+0

Я заменил старую кнопку на новую, оставив точку останова на новой кнопке (без кодов). Кнопка работала на моей машине разработки. Тем не менее, он не работал при развертывании на веб-сайте хостинга, и он дал ошибку компиляции! – Max

0

Просто удалите событие click protected void btnSubmit_Click(object sender, EventArgs e) из backend и OnClick="btnSubmit_Click" из aspx создайте решение, а затем снова определите событие click и привяжите его.

Это происходит, когда вы удаляете автоматически сгенерированное событие кликов.

+0

Вы имеете в виду определение вручную, а не двойной щелчок! – Max

+0

Как вам нравится ... вы можете сделать любой из двух способов! – Tushar

+0

Я пробовал точно, что вы сказали один раз вручную, а другой автоматически, но не работал! – Max

Смежные вопросы