Reputation: 1997
I have a page with a with a form i when i fill the form i want to access that form data in my c# codebehind file.
Register.aspx:
<%@ Page Title="Home" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="True" CodeBehind="Register.aspx.cs" Inherits="Informito._Default" %>
<div>
<table class="style1">
<tr>
<td>Utilizador:</td>
<td><asp:TextBox ID="Utilizador" name="Utilizador" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td>Password:</td>
<td><asp:TextBox ID="Password" runat="server" TextMode="Password"></asp:TextBox></td>
</tr>
</table>
</div>
<asp:Button ID="Button1" runat="server" Text="Registar" OnClick="Registar"/>
Register.aspx.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.Security;
using System.Data.SqlClient;
using Informito.Admins;
namespace Informito
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
public void Registar(object sender, EventArgs e)
{
string Username = Utilizador.Text; //Error here: Object reference not set to an instance of an object.
string Password= Password.Text;
RegisterUser(Username, Password, 1);
}
}
}
Register.aspx.designer.cs:
namespace Informito {
public partial class _Default {
protected global::System.Web.UI.WebControls.LoginView LoginView1;
protected global::System.Web.UI.WebControls.TextBox Utilizador;
protected global::System.Web.UI.WebControls.TextBox Password;
}
}
What function i have to use to read from a asp.net textbox and pass it to by c# codebehind variable?
Upvotes: 0
Views: 15198
Reputation: 4101
Make sure your code inside a <form runat="server"></form>
tag?
Your code should look like:
<form runat='server' id="form1">
<div>
<table class="style1">
<tr>
<td>Utilizador:</td>
<td>
<asp:TextBox ID="Utilizador" name="Utilizador" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>Password:</td>
<td><asp:TextBox ID="Password" runat="server" TextMode="Password"></asp:TextBox></td>
</tr>
</table>
</div>
<asp:Button ID="Button1" runat="server" Text="Registar" OnClick="Registar"/>
</form>
EDIT
To reference controls in a master page/content placeholder
Upvotes: 1
Reputation: 9019
UPDATE:
You need to enclose your markup in <asp:Content></asp:Content>
tags because you are using a master page.
If you have used Visual Studio to generate your web project, then you can see Register.aspx.designer.cs which should have code like below. If you don't then add it in the class (you can add it in Register.aspx.cs or Register.aspx.designer.cs).
protected global::System.Web.UI.WebControls.TextBox Utilizador;
Then you can use
string UserName = Utilizador.Text;
UPDATE:
I just tried this and seems to work fine:
Register.aspx.cs
public void Registar(object sender, EventArgs e)
{
string Username = Utilizador.Text;
string PassWd = Password.Text;
RegisterUser(Username, PassWd, 1);
}
Register.aspx.designer.cs
public partial class _Default {
protected global::System.Web.UI.WebControls.TextBox Utilizador;
protected global::System.Web.UI.WebControls.Button Button1;
protected global::System.Web.UI.WebControls.TextBox Password;
}
Register.aspx
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Register.aspx.cs" Inherits="Informito._Default" %>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<div>
<table class="style1">
<tr>
<td>Utilizador:</td>
<td><asp:TextBox ID="Utilizador" name="Utilizador" runat="server"></asp:TextBox></td>
</tr>
<tr>
<td>Password:</td>
<td><asp:TextBox ID="Password" runat="server" TextMode="Password"></asp:TextBox></td>
</tr>
</table>
</div>
<asp:Button ID="Button1" runat="server" Text="Registar" OnClick="Registar"/>
</asp:Content>
Upvotes: 2