webForumDet fria alternativet

CodeBehind i UserControls

3 svar · 213 visningar · startad av Engine^

Engine^Medlem sedan dec. 20003 887 inlägg
#1

Hur kan jag använda codebehind i .ascx? Jag har suttit och testat en del nu, men jag kommer endast fram till felmeddelandet:

Parser Error Message: 'cClass' is not a valid base class because it does not extend class 'System.Web.UI.UserControl'.

och jag förstår inte riktigt vad det menar förutom att inte riktigt fungerar som jag fått för mig

<%@ Control Language="C#" Src="/usercontrol.ascx.cs" Inherits="cClass" %>

Jag hade ju tänkt att man lite smidigt skulle kunna busa med kontrollen, när den har lästs in, med hjälp av

[blue]// usercontrol.ascx.cs[/blue]
using System;
using System.Web.UI;

public class cClass : Page
{
  public void Page_Load(object objSrc, EventArgs e)
  {
    this.[i]usercontrol.table.td.property = somevalue[/i] [blue]// <-- eller något[/blue]
  }
}

Page_Load kanske inte är rätt alternativ, men det förklarar nog lite hur jag tänker ;)

Nåväl, går det att använda codebehind på det här sättet eller är det att feltolka uppdelningen av lager?

GladhMedlem sedan maj 20012 812 inlägg
#2

precis som det står i ditt felmeddelande så skall du inte ärva från Page utan från System.web.Ui.UserControl

namespace WebApplication1
{
	using System;
	using System.Data;
	using System.Drawing;
	using System.Web;
	using System.Web.UI.WebControls;
	using System.Web.UI.HtmlControls;

	/// <summary>
	///		Summary description for WebUserControl1.
	/// </summary>
	public abstract class WebUserControl1 : System.Web.UI.UserControl
	{

		private void Page_Load(object sender, System.EventArgs e)
		{
			// Put user code to initialize the page here
		}

		#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);
		}
		
		///		Required method for Designer support - do not modify
		///		the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{
			this.Load += new System.EventHandler(this.Page_Load);
		}
		#endregion
	}

- Magnus

Engine^Medlem sedan dec. 20003 887 inlägg
#3

Man tackar. Jag har för mig att jag testade något liknande inatt, men jag var nog för trött för att begripa vad jag gjorde. :)

Engine^Medlem sedan dec. 20003 887 inlägg
#4

Följdfråga: Varför lägger Visual till abstract i klassen?

Jag läste lite på MSDN om Abstract classes och kan väl inte påstå att jag förstog mer än ...used to indicate that a class is incomplete and that it is intended to be used only as a base class... Det kan väl vara logiskt i det här fallet, men det fungerar ju utan problem även om man skippar abstract.

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