webForumDet fria alternativet

Server controll

1 svar · 237 visningar · startad av icaaq

icaaqMedlem sedan okt. 20005 273 inlägg
#1

Hej.
Jag har dragit ihop en server controll som ska göra en liten usercheck. Den ser ut så här

[red]
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;

namespace UserLogin
{
	/// <summary>
	/// Summary description for UserLogin.
	/// </summary>
	/*[DefaultProperty("Text"), 
	ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")]*/
	public class UserLogin : System.Web.UI.WebControls.WebControl, System.Web.UI.INamingContainer
	{
		// Declaration block at class-level

		TextBox txtUsername = new TextBox();
		TextBox txtPassword = new TextBox();
		TextBox txtEmail = new TextBox();
		
		Label lblUsername = new Label();
		Label lblPassword = new Label();
		Label lblEmail = new Label();
		Label lblErrorMessage = new Label();

		Button btnSubmit = new Button();

		Table table = new Table();

		public string UsernameLabel
		{
			get
			{
				return lblUsername.Text;
			}
			set
			{
				lblUsername.Text = value;
			}
		}
		public string PasswordLabel
		{
			get
			{
				return lblPassword.Text;
			}
			set
			{
				lblPassword.Text = value;
			}
		}
		public string EmailLabel
		{
			get
			{
				return lblEmail.Text;
			}
			set
			{
				lblEmail.Text = value;
			}
		}
		public string ButtonLabel
		{
			get
			{
				return btnSubmit.Text;
			}
			set
			{
				btnSubmit.Text = value;
			}
		}
		private void InitializeControls()
		{
			// Subcribe to the submit button's Click event

			btnSubmit.Click += new EventHandler(btnSubmit_Click);

			// Assign default values to the controls that are blank

			if (lblUsername.Text == string.Empty)
				lblUsername.Text = "Användarnamn: ";
			if (lblPassword.Text == string.Empty)
				lblPassword.Text = "Lösenord: ";
			if (lblEmail.Text == string.Empty)
				lblEmail.Text = "E-post: ";

		}
		private void btnSubmit_Click(object sender, EventArgs e)
		{
			// Try to insert an entry
			lblErrorMessage.Text = "jippie";
			/*if (XmlEngine.InsertGuestbookEntry( txtName.Text , txtEmail.Text , txtMessage.Text , listRating.SelectedItem.Text ))
				Page.Response.Redirect("Default.aspx"); // If the entry was successfully inserted, reload the page*/

		}
		protected override void CreateChildControls()
		{
			// Create the table

			TableRow tr = new TableRow();
			TableCell td = new TableCell();

			// "Usernme" row

			td.Controls.Add(lblUsername);
			tr.Controls.Add(td);
			td = new TableCell();
			td.Controls.Add(txtUsername);
			tr.Controls.Add(td);
			td = new TableCell();
			tr.Controls.Add(td);
			table.Controls.Add(tr);

			// "Password" row

			tr = new TableRow();
			td = new TableCell();
			td.Controls.Add(lblPassword);
			tr.Controls.Add(td);
			td = new TableCell();
			td.Controls.Add(txtPassword);
			tr.Controls.Add(td);
			table.Controls.Add(tr);

			// "Email" row
			tr = new TableRow();
			td = new TableCell();
			td.Controls.Add(lblEmail);
			tr.Controls.Add(td);
			td = new TableCell();
			td.Controls.Add(txtEmail);
			tr.Controls.Add(td);
			table.Controls.Add(tr);

			// Button row

			tr = new TableRow();
			td = new TableCell();
			td.ColumnSpan = 3;
			td.Controls.Add(btnSubmit);
			tr.Controls.Add(td);
			table.Controls.Add(tr);

			// Add the table to the control's ControlCollection

			Controls.Add(table);
		}
		protected override void OnInit(EventArgs e)
		{
			base.OnInit(e);
			InitializeControls();
		}
		/// <summary>
		/// Render this control to the output parameter specified.
		/// </summary>
		/// <param name="output"> The HTML writer to write out to </param>
		protected override void Render(HtmlTextWriter writer)
		{
			// Renders the control's attributes

			AddAttributesToRender(writer);
			// Render the table

			table.RenderControl(writer);
		}
	}
}
[/red]

Problemet är att jag får

Parser Error Message: File or assembly name ”UserLogin”, or one of its dependencies, was not found.
När jag lägger in controllen på en aspx så här

[red]
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="test.WebForm1" %>
<%@ Register TagPrefix=”NineteenDecember” Namespace=”UserLogin” Assembly=”UserLogin” %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 

<html>
  <head>
    <title>WebForm1</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name=vs_defaultClientScript content="JavaScript">
    <meta name=vs_targetSchema content="http://schemas.microsoft.com/intellisense/ie5">
  </head>
  <body MS_POSITIONING="GridLayout">	
    <form id="Form1" method="post" runat="server">
		<NineteenDecember:UserLogin runat='server'>
    </form>	
  </body>
</html>
[/red]

UserLogin.cs ligger i samma project.
Vad är fel?

mv icaaq

icaaqMedlem sedan okt. 20005 273 inlägg
#2

Efter lite felsökning hittade jag felet. Nu ser det ut så här:

[red]
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;

namespace NineteenDecember
{
	/// <summary>
	/// Summary description for UserLogin.
	/// </summary>
	/*[DefaultProperty("Text"), 
	ToolboxData("<{0}:WebCustomControl1 runat=server></{0}:WebCustomControl1>")]*/
	public class UserLogin : System.Web.UI.WebControls.WebControl, System.Web.UI.INamingContainer
	{
		// Declaration block at class-level

		TextBox txtUsername = new TextBox();
		TextBox txtPassword = new TextBox();
		TextBox txtEmail = new TextBox();
		
		Label lblUsername = new Label();
		Label lblPassword = new Label();
		Label lblEmail = new Label();
		Label lblErrorMessage = new Label();

		Button btnSubmit = new Button();

		Table table = new Table();

		public string UsernameLabel
		{
			get
			{
				return lblUsername.Text;
			}
			set
			{
				lblUsername.Text = value;
			}
		}
		public string PasswordLabel
		{
			get
			{
				return lblPassword.Text;
			}
			set
			{
				lblPassword.Text = value;
			}
		}
		public string EmailLabel
		{
			get
			{
				return lblEmail.Text;
			}
			set
			{
				lblEmail.Text = value;
			}
		}
		public string ButtonLabel
		{
			get
			{
				return btnSubmit.Text;
			}
			set
			{
				btnSubmit.Text = value;
			}
		}
		private void InitializeControls()
		{
			// Subcribe to the submit button's Click event

			btnSubmit.Click += new EventHandler(btnSubmit_Click);

			// Assign default values to the controls that are blank

			if (lblUsername.Text == string.Empty)
				lblUsername.Text = "Användarnamn: ";
			if (lblPassword.Text == string.Empty)
				lblPassword.Text = "Lösenord: ";
			if (lblEmail.Text == string.Empty)
				lblEmail.Text = "E-post: ";

		}
		private void btnSubmit_Click(object sender, EventArgs e)
		{
			// Try to insert an entry
			lblErrorMessage.Text = "jippie";
			/*if (XmlEngine.InsertGuestbookEntry( txtName.Text , txtEmail.Text , txtMessage.Text , listRating.SelectedItem.Text ))
				Page.Response.Redirect("Default.aspx"); // If the entry was successfully inserted, reload the page*/

		}
		protected override void CreateChildControls()
		{
			// Create the table

			TableRow tr = new TableRow();
			TableCell td = new TableCell();

			// "Usernme" row

			td.Controls.Add(lblUsername);
			tr.Controls.Add(td);
			td = new TableCell();
			td.Controls.Add(txtUsername);
			tr.Controls.Add(td);
			td = new TableCell();
			tr.Controls.Add(td);
			table.Controls.Add(tr);

			// "Password" row

			tr = new TableRow();
			td = new TableCell();
			td.Controls.Add(lblPassword);
			tr.Controls.Add(td);
			td = new TableCell();
			td.Controls.Add(txtPassword);
			tr.Controls.Add(td);
			table.Controls.Add(tr);

			// "Email" row
			tr = new TableRow();
			td = new TableCell();
			td.Controls.Add(lblEmail);
			tr.Controls.Add(td);
			td = new TableCell();
			td.Controls.Add(txtEmail);
			tr.Controls.Add(td);
			table.Controls.Add(tr);

			// Button row

			tr = new TableRow();
			td = new TableCell();
			td.ColumnSpan = 3;
			td.Controls.Add(btnSubmit);
			tr.Controls.Add(td);
			table.Controls.Add(tr);

			// Add the table to the control's ControlCollection

			Controls.Add(table);
		}
		protected override void OnInit(EventArgs e)
		{
			base.OnInit(e);
			InitializeControls();
		}
		/// <summary>
		/// Render this control to the output parameter specified.
		/// </summary>
		/// <param name="output"> The HTML writer to write out to </param>
		protected override void Render(HtmlTextWriter writer)
		{
			// Renders the control's attributes

			AddAttributesToRender(writer);
			// Render the table

			table.RenderControl(writer);
		}
	}
}
[/red]

Och i aspx

[red]
<%@ Register TagPrefix="NineteenDecember" Namespace="NineteenDecember" Assembly="NineteenDecember" %>
<%@ Page language="c#" Codebehind="WebForm2.aspx.cs" AutoEventWireup="false" Inherits="test.WebForm2" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
	<head>
		<title>WebForm2</title>
		<meta name="GENERATOR" content="Microsoft Visual Studio 7.0">
		<meta name="CODE_LANGUAGE" content="C#">
		<meta name="vs_defaultClientScript" content="JavaScript">
		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
	</head>
	<body>
		<form id="WebForm2" method="post" runat="server">
			<NineteenDecember:userlogin runat="server"/>
		</form>
	</body>
</html>[/red]

nu ska jag bara slipa på funktionerna ;)

mv icaaq

141 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)