jag har gjort en helt otroligt lätt user control den har bara en enda textbox Du kan inte initiera en user control med new. Tack så mycket det funkade. Inte så att den lägger till @register och allt som behövs för att få den att fungera utan att skrive en rad kod. Det går bara med custom controls.lätt user control som inte funkar
så här ser html koden för den ut
<code>
<%@ Control Language="c#" AutoEventWireup="false" Codebehind="knapp.ascx.cs" Inherits="uc.knapp" TargetSchema="http://schemas.microsoft.com/intellisense/ie5"%>
<ASP:TextBox id="name" runat="server" />
</code>
i knapp codebehind har jag detta
<code>
public string test
{
get
{
return name.Text;
}
set
{
name.Text = value;
}
}
</code>
sen i min webform1.aspx så har jag dragit och släppt in denna kontroll.
<code>
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="uc.WebForm1" %>
<%@ Register TagPrefix="uc1" TagName="knapp" Src="knapp.ascx" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<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">
<uc1:knapp id="Knapp1" runat="server"></uc1:knapp>
</form>
</body>
</HTML>
</code>
här är min webform1.aspx.cd
<code>
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace uc
{
public class WebForm1 : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
//knapp k1 = new knapp();
//k1.test = "hej";
}
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
InitializeComponent();
base.OnInit(e);
}
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
}
}
</code>
Vet dock inte hur jag ska skicka in värdet från min webform så att textboxen fylls med det värdet. Får detta felet
Object reference not set to an instance of an object.
och så klagar den på name.text = value i min knapp.ascx
detta händer när jag kommenterar in
knapp k1 = new knapp();
k1.test = "hej";Sv: lätt user control som inte funkar
För att komma åt den du har, så får du lägga till den i din code-behind som en variabel, testa:
<code>
protected knapp Knapp1;
public class WebForm1 : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
Knapp1.test = "hej";
}
</code>
Du kan även använda FindControl för att få tag på din kontroll.
<code>
knapp k1 = (knapp)FindControl("Knapp1");
k1.text = "Hej";
</code>
/Fredrik Normén NSQUARED2
http://www.nsquared2.netSv: lätt user control som inte funkar
Kan jag på något sätt lägga in min user control så den finns i toolboxen ? så att man lätt kan komma åt den från projektenSv: lätt user control som inte funkar
/Fredrik Normén NSQUARED2
http://www.nsquared2.net