Jag har just börjat med .net, och jag måste säga att ramverket som sådant var över förväntan. Dock så är jag lagd åt det hållet att jag vill anpassa miljön själv. Jag skulle vilja skapa egna webbkomponenter, helst i skriptkod, så att t ex
<asp:MinKomponent ID="MinKomponent1" runat="server" />
... på något sätt anropar en funktion eller hur det nu ska gå till.
Sen undrar jag hur jag kan göra en browser-check på "rätt" sätt i asp.net. (Jo jag vet faran med sådana, och lovar att använda dem ansvarsfullt ;) )
Jag tycker du ska kolla på Castle project:
http://www.castleproject.org/
Två artiklar för att göra dig nyfiken:
http://geekswithblogs.net/hammett/articles/76697.aspx
http://geekswithblogs.net/hammett/articles/76809.aspx
Om du nu ändå ska börja lära dig så kan du ju lika gärna lära dig nåt vettigt direkt, menar jag... (och så ligger det förstås ett egenintresse i det från min sida, för jag tänkte nämligen också börja lära mig det här nu)
aleborgMedlem sedan jan. 20013 341 inlägg Det är enkelt, skapa en ny "Web User Control"
I web.Config placerar du sen(inom <system.web> ):
<pages>
<controls>
<add tagPrefix="Min" tagName="Meny" src="~/Sökväg/till/MinWebUserControl.ascx"/>
</controls>
</pages>
På valfri sida lägger du sen in:
<Min:Meny ID="Meny1" runat="server" />
I din WebControl kan du även lägga in publika funktioner:
public void RopaHej(string text)
{
Response.Write(text);
}
anropa den med:
<Min:Meny ID="Meny1" runat="server" RopaHej="Hej!" />
Det där ser ju onekligen intressant ut. Men! Jag sitter på en slags praktikplats, där jag kommer sitta två månader och syftet är att att jag ska applicera mina programmeringskunskaper på .net, och göra något användbart. Dock är det begränsat till ren .net, utan inblandning av externa bibliotek, delvis för att inte försvåra alltför mycket för den ordinarie utvecklaren. Så tyvärr är det som sagt ren .net som gäller för denna gång.
/r Svar till antipenta. Aleborg, du var en snabb jävel du! §e
aleborgMedlem sedan jan. 20013 341 inlägg Min kod kräver bara .NET :e
Ja, då är castle rätt uteslutet. Attans. Jag har ingen att diskutera det med alls, nämligen ;)
Aleborg, jag får det nästan att funka.
Sidan kompilerar utan fel, men en rad är felmarkerad i editorn. Och när jag laddar sidan så funkar det, utom min komponent.
Default.aspx:
<DtTree:[u]TreeNode[/u] RopaHej="Albert" ID="Bla" runat="server" />
Tooltip: Element 'TreeNode' is not a known element. ...
web.config
<controls>
<add tagPrefix="DtTree" tagName="TreeNode" src="~/ctl/WebUserControl2.ascx"/>
</controls>
~/ctl/WebUserControl2.ascx:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl2.ascx.cs" Inherits="WebUserControl2" %>
~/ctl/WebUserControl2.ascx.cs:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class WebUserControl2 : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
public void RopaHej(string text)
{
Response.Write(text);
}
}
Vad kan vara fel?
Vilket helgerån mot unix-världens '~', övrigen...
aleborgMedlem sedan jan. 20013 341 inlägg Hmm, kan inte testa nu men gör så här:
public partial class WebUserControl2 : System.Web.UI.UserControl
{
private string hej = string.Empty;
public string RopaHej
{
set{ hej = value;}
}
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(hej);
}
}
Hmmz0rz...
Att lägga en Response.Write i Page_Load verkar göra så att strängen hamnar längst upp på sidan. Att lägga html-kod i acsx-filen verkar göra det jag egentligen ville (Men tydligen inte hittade ord för) nämligen att kunna lägga till kod som ett "makro", där man kan skriva in HTML-kod mixat med programkod. Till slut fick jag det att funka:
~/ctl/WebUserControl2.ascx.cs
using blablabla
public partial class WebUserControl2 : System.Web.UI.UserControl
{
public string hej2 = "defaultvärde";
protected void Page_Load(object sender, EventArgs e)
{
}
public string RopaHej
{
set { hej2 = value; }
}
}
~/ctl/WebUserControl2.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="WebUserControl2.ascx.cs" Inherits="WebUserControl2" %>
<input type="button" /><!-- Eller vad man vill -->
<asp:RadioButton ID="RadioButton1" runat="server" /><!-- Eller vad man vill -->
<% Response.Write(hej2); %>
Default.aspx
<DtTree:TreeNode RopaHej="Albert" ID="Meny1" runat="server" />
Så, nu när det är avklarat undrar jag dels om det här är "rätt" sätt att göra detta på, dels om det finns något sätt att utifrån en egen klass skriva saker till head, t ex om jag vill lägga script-tagg där, utan att behöva placera ut en till tagg i default-aspx.
DinoMedlem sedan sep. 20011 914 inlägg