doggelitoMedlem sedan juni 20003 100 inlägg
bara spånar lite nu! :stud
har x antal siter som använder samma web user control.
jag har alltså kopierat över ascx filen och lagt i allas siters webmapp.
om jag sedan gör en ändring i orginalfilen så kopierar jag ut den på nytt.
detta är ju lite halvjobbigt då jag måste kompilera om varje site sedan och ftpa upp till servern!
så går det att göra om min kontroll till en dll-fil istället som jag bara behöver kopiera och lägga i varje sites binmapp sedan så jag slipper kompilera om siterna?
CatZMedlem sedan jan. 20022 341 inlägg
Precis rätt, kanske till och med kan göra en webservice av kontrollen då slipper du ju till och med kopiera dll filen :)
GladhMedlem sedan maj 20013 024 inlägg
Japp det går utmärkt, det du skall leta efter är "ASP.NET Custom Server control" på google så hittar du massor med information...
- M
doggelitoMedlem sedan juni 20003 100 inlägg
Tack grabbar för tipsen! :bire
Har nu lyckats göra en composite kontroll som innehåller bla. en button och har nu en liten fundering:
Går det att ärva buttonens alla egenskaper på nått sätt, ex text, font, CssClass osv.
eller måste jag göra egna i min kontroll?
Så här ser det ut nu:
public class ContactForm : CompositeControl
{
private Button sendButton = new Button();
protected override void CreateChildControls()
{
Controls.Add(sendButton);
base.CreateChildControls();
}
}
<cc1:ContactForm ID="ContactForm1" runat="server" SendButton-Font-Bold="True" />
Jag antar att denna property måste jag skriva själv eller?
GladhMedlem sedan maj 20013 024 inlägg
Nej, om du vill ärva något så måste du ha den kontrollen som baskontroll så det går inte om du vill göra en compositecontrol. Om du vill göra en egen Button så går det, men du vill ju ha flera kontroller i din kontroll så då går det inte, du får helt enkelt wrappa dem. Det kanske går att lägga din Button som en public properties så kanske du kan komma åt dem enkelt genom:
<cc1:ContactForm ID="ContactForm1" runat="server" Button.FontBold="True" />
- M
doggelitoMedlem sedan juni 20003 100 inlägg
Oki! :)
En annan fråga:
Var är bäst att lägga "vanlig" htmlkod (jag har sett exempel på båda nämligen), i CreateChildControls() eller i RenderContents()?
protected override void CreateChildControls()
{
Controls.Add(new LiteralControl("<table border=\"0\">"));
...
}
protected override void RenderContents(HtmlTextWriter output)
{
output.Write("<table border=\"0\">");
...
}
Jag tycker att det bör ligga i RenderContents men vill kolla med er för att vara säker! :)
GladhMedlem sedan maj 20013 024 inlägg
Nu har jag inte lagt någon engen HTML-kod, så jag vet faktiskt inte. Men generellt så tycker jag du skall undvika det men om du måste så hade jag wrappat det i en literalControl som du gör i CreateChild-metoden, det känns mest ASP.NET jämfört med att streama ut det direkt i Render-metoden. Men kör på det som passar dig bäst.
- M