2015-08-26 3 views
0

Я работаю над сайтом C#, ASP.NET, и я столкнулся с проблемой. Он также использует базу данных SQL для целей вставки. То, что я испытываю, - это когда я пытаюсь написать код либо в файле aspx, используя «код здесь», либо в коде «i.e» page.aspx.cs », я все еще сталкиваюсь с этой же проблемой.«Имя» не существует в текущем контексте

Итак, я создал проект как «веб-форму», и он включает модуль «Регистр/Идентификация», и я работаю на странице «Register.aspx», чтобы добавить дополнительные поля, которые мне нужны , и при нажатии на регистрацию я пытаюсь вставить их в другую базу данных.

<script runat="server"> 
protected void Unnamed20_Click(object sender, EventArgs e) 
    { 
     string connectionString = WebConfigurationManager.ConnectionStrings["Users"].ConnectionString; 
     SqlConnection con = new SqlConnection(connectionString); 
     string sql; 
     sql = "insert users (username, title, gname, sname, dob, address, suburb, state, postcode, phone, email) values (@Username, @Title, @Gname, @Sname, @Dob, @Address, @Suburb, @State, @Postcode, @Phone, @Email)"; 
     SqlCommand cmd = new SqlCommand(sql, con); 

     cmd.Prepare(); 

     String suburb = txtSuburb.Text; 


     cmd.Parameters.AddWithValue("@Username", RegisterUser.UserName); 
     cmd.Parameters.AddWithValue("@Title", txtTitle.Text); 

    } 

Теперь проблема возникает там, где он говорит: «@title», txtTitle.Text «txtTitle.Text» является проблемой, так что для меня это называется txtTitle.Text в моей веб-странице, но когда я Я пытаюсь получить к нему доступ через код, как указано выше, он дает мне ошибку этого заголовка. Он подчеркивается красным цветом, и я не знаю, как решить эту проблему.

Вот разметка для управления txtTitle:

<li> 
    <asp:Label runat="server" AssociatedControlID="Title">Title</asp:Label> 
    <asp:TextBox ID="txtTitle" runat="server"></asp:TextBox> 
    <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtTitle" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator> 
</li> 

Как я могу это исправить, так что я в состоянии получить доступ к этому управлению с помощью кода?

+0

Можете ли вы показать разметку для 'контроля txtTitle'? – Andrei

+0

'

  • <жерех: Этикетка Runat = "сервер" AssociatedControlID = "Заголовок"> Заголовок <жерех: TextBox ID = "txtTitle" Runat = "сервер"> <жерех: RequiredFieldValidator ID = «RequiredFieldValidator2» runat = «server» ControlToValidate = «txtTitle» ErrorMessage = «RequiredFieldValidator»>
  • ' –

    +0

    Это должно быть редактирование сообщения, а не комментарий. Кроме того, это в какой-то шаблон? Как панель обновления или вид сетки или что-то в этом роде? – Andrei

    ответ

    0

    Как выяснилось в комментариях, txtTitle управление живет внутри элемента управления мастера. Такие элементы управления не могут быть доступны непосредственно, так что вам нужно использовать FindControl:

    TextBox txtTitle = (TextBox)WizardControlIdHere.StepNameHere 
                   .ContentTemplateContainer 
                   .FindControl("txtTitle"); 
    cmd.Parameters.AddWithValue("@Title", txtTitle.Text);