2013-08-23 4 views
1

Im делает сайт, который отправляет информацию на сервер mysql, используя asp.net. код. Проблема Im имея в том, что, когда я отладки кода и запустить страницу, я получаю эти ошибки:"" Не существует в текущем контексте?

enter image description here

Я не знаю, почему, у меня есть эта ошибка. Вот мой код:

default.aspx

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master"     AutoEventWireup="true" 
     CodeFile="Default.aspx.cs" Inherits="_Default"%> 
     <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 
    <form id="form1" runat="server"> 
    <div> 
    <table width="300px" > 
    <tr> 
    <td>First Name</td> 
    <td> 
     <asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox> 
     </td> 
    </tr> 
     <tr> 
    <td >Last Name</td> 
    <td> 
     <asp:TextBox ID="txtLastName" runat="server"></asp:TextBox> 
      </td> 
    </tr> 
     <tr> 
    <td>User Name</td> 
    <td> 
     <asp:TextBox ID="txtUserName" runat="server"></asp:TextBox> 
      </td> 
    </tr> 
     <tr> 
    <td>Password</td> 
    <td> 
     <asp:TextBox ID="txtPassword" runat="server"></asp:TextBox> 
      </td> 
    </tr> 
     <tr> 
    <td>Email Address</td> 
    <td> 
     <asp:TextBox ID="txtEmail" runat="server"></asp:TextBox> 
      </td> 
    </tr> 
     <tr> 
    <td>&nbsp;</td> 
    <td> 
     <asp:Button ID="btnSave" runat="server" Text="Save" onclick="btnSave_Click" /> 
      </td> 
    </tr> 
     <tr> 
    <td>&nbsp;</td> 
    <td> 
     <asp:Label ID="lblError" runat="server" Text=""></asp:Label> 
      </td> 
    </tr> 
    </table> 
    </div> 
    </form> 
    </asp:Content ID="Content1" runat="server" ContentPlaceHolderID="MainContent"> 

Default.aspx.cs

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

} 
protected void btnSave_Click(object sender, EventArgs e) 
{ 
    try 
    { 

     string cnnString = "Server=localhost;Port=1111;Database=ci_series;Uid=asdfasdf;Pwd=*******"; 


     MySqlConnection connection = new MySqlConnection(cnnString); 


     string cmdText = "INSERT INTO membership (first_name ,last_name ,username ,password ,"; 
     cmdText += "email_address)VALUES (first_name ,last_name ,username ,password ,email_address);"; 

     MySqlCommand cmd = new MySqlCommand(cmdText, connection); 


     cmd.CommandType = CommandType.Text; 
     cmd.Parameters.Add("?first_name", MySqlDbType.VarChar).Value = txtFirstName.Text; 
     cmd.Parameters.Add("?last_name", MySqlDbType.VarChar).Value = txtLastName.Text; 
     cmd.Parameters.Add("?username", MySqlDbType.VarChar).Value = txtUserName.Text; 
     cmd.Parameters.Add("?password", MySqlDbType.VarChar).Value = txtPassword.Text; 
     cmd.Parameters.Add("?email_address", MySqlDbType.VarChar).Value = txtEmail.Text; 

     connection.Open(); 

     int result = cmd.ExecuteNonQuery(); 

     lblError.Text = "Data Saved"; 

    } 
    catch (Exception ex) 
    { 
     lblError.Text = ex.Message; 
    } 
} 
    } 

Как это исправить? Что означает «Не существует в текущем контексте»? Заранее спасибо!

+2

'' вместо ' ' – PiLHA

+0

Хорошо, что сработало, но теперь у меня есть эта ошибка:' Сведения об исключении: System.Web.HttpException: страница может иметь только одну серверную Form tag.' –

+2

Это страница контента, ваша главная страница уже имеет форму. –

ответ

3

1) Убедитесь, что runat = "server" находится в теге html на главной странице.

2) Иногда вы получаете эту ошибку из-за проблемы с кешированием сборки и сбоя, потому что VS путается о том, что на самом деле нужно перекомпилировать. - Я просто удаляю элементы кэша и обычно перекомпилирую, считая, что более 1 вещи могут быть ошибочными.

+0

Да, была ошибка runat = "server". Я не могу опубликовать свои решения, пока не получу 10 повторений, но это было исправление моей второй ошибки. Спасибо!! –

+0

Не забудьте исправить и другие проблемы - дополнительный тег

вызовет проблемы –

+1

Кроме того, VS обычно не просто путают наугад, а потому, что другая (часто неиспользуемая копия) имеет одно и то же имя класса, поэтому VS не перекомпилируйте тот, который вам нужен. Видите, стирание кеша и перекомпиляция на самом деле не являются «решением», но это экономит ваше время, чтобы выкопать дубликат, чтобы вы могли сосредоточиться на том, что вы делаете в данный момент. –

2

У вас есть 2 проблемы

  1. </asp:Content> instead </asp:Content ID="Content1" runat="server" ContentPlaceHolderID="MainContent">. Уже поставлен комментарий от piLHa

  2. Не требуется form tag на странице с контентом. form tag уже определен в master page, поэтому, пожалуйста, удалите form tag на странице вашего контента.

2

У меня была аналогичная проблема при получении старых VS2005 файлов aspx/aspx.cs в новый проект в VS2013. Я решил это, создав новое веб-приложение, создав новую веб-форму для каждой страницы aspx и скопировав код для .aspx и .cs. После копирования я должен изменить первую строку .cs файлов, чтобы использовать CodeBehind вместо CodeFile.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="_Login" %> 

К

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="_Login" %> 

Я надеюсь, что это поможет кому-то еще.

+0

Если у вас есть старая главная страница или страница, создание новой страницы и копирование контента разрешит проблему. –

-1

Right_click на "WebApplication"

Image

и нажмите на "Преобразовать в веб-приложение" Image

0

меня такая же проблема, когда я был кодирования с C# ASPX и я понял, это как что:

Я удалил это Inherits = "project_name.ClassName " из моего файла XXX.aspx ошибочно, что является первой строкой в ​​моем файле XXX.aspx. И затем, когда я добавил Inherits =" имя_проекта.ClassName " этот код для моей первой строки в XXX.aspx, а затем он решил мою проблему. Вы должны контролировать свою первую строку в вашем файле XXX.aspx, вы можете удалить Inherits =" имя_проекта.ClassName " неправильно ....

Я надеюсь, что вы будете выяснить проблему для этого ответа.

Успехов

0

Заменить ниже код .aspx страницы в @page теге

Заменить это: <% @ Page Language = "C#" AutoEventWireup = "истинный" CodeBehind = "Test.aspx.cs" Inherits = "Namespace.Test" %>

Заменить: <% @ Page Language = "C#" AutoEventWireup = "true" CodeFile = "~/Test.aspx.cs" CodeBehind = "Test.aspx.cs" Inherits = "Namespace.Test"%>

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