Om man har en masterpage, en repeater och en HtmlControl får man detta fina Id Du kan använda ClientID-egenskapen för att få den renderade ID-taggen. Ja, men du ville väl referera till kontrollen? Varför skulle du vilja sätta den egenskapen? om du kollar på min orginalfråga så vill jag allså få .net att rendera kortare id'n. Nu använder den namnet både på masterpage, repeatern och HtmlControlen blir långa och fult i htmlkoden på clientside. Frågan är allså hur jag kan styra vilka id'n som renderas.. Vad spelar det för roll hur idna ser ut på klientsidan? ser inte proffs ut med sådana idn och onödigt att ha idn för kontroller som inte behöver det (länkar ,etc so m inte ska gå att identifiera vid postback) Vad är orsaken att du vill ha kortare? Det som du inte behöver identifiera vid Postback gör du som vanliga HTML-controls utan runat=server, hmm... Det snyggaste sättet enligt mig för till exempel repeaters är att använda event för att populera den. Jag måste hålla med Ola: om du inte behöver komma åt kontrollerna vid postback, varför har dom då "runat=server" satt? Kör vanliga HTML-kontroller om du inte behöver komma åt dom på serversidan, då kan dom få "snygga ID:n" som du önskade. ID:t behövs av ASP.NET om du har EnableViewstate=True för din Repeater. Alltså även om du inte använder det så används det av ASP.NET för att återskapa HTML efter Postback. "ser inte proffs ut med sådana idn " Det ser väl proffsigare ut att använda världens mest tillämpade serverteknologi för dynamisk HTML än gammal statiskt kodad HTML anno 1996? =) Nu har jag nästan lyckats med att få till kontroller som inte renderar skit writer.Write renderar utanför elementet av nån anledning.. Detta tycker jag är en snygg lösningFå .net att rendera snällare id'n?
id="ctl00_ContentPlaceHolder1_articlesRepeater_ctl00_articleAnchor"
går det inte att få den lite kortatare utan att ändra namnen på objekten i koden?Sv: Få .net att rendera snällare id'n?
Sv: Få .net att rendera snällare id'n?
Sv:Få .net att rendera snällare id'n?
/AndersSv: Få .net att rendera snällare id'n?
Så vitt jag vet går det inte, namnen ser ut som de gör för att asp.net skall kunna säkerställa att de är unika och på det sättet kunna se till att inte data och events knyts till fel kontroll.Sv:Få .net att rendera snällare id'n?
Sv: Få .net att rendera snällare id'n?
Slutanvändaren bryr sig knappast om dom?Sv: Få .net att rendera snällare id'n?
då får objekten det id du sätter. Som redan har påpekats så måste ASP.NET:s Postback-mekanism styra över servercontrol ID:n för att Postback skall fungera. Du kan förstås byta namn på ContentPlaceholder1 till något kortare.. "content".. eller "c".Sv:Få .net att rendera snällare id'n?
Säg att du har en översikt med produktbilder, jag skapar en repetear med en <img> htmlkontrol, för att den ska kunna kommas åt via ItemCreated eventented så måste den ha ett id, även om jag inte behöver idnt client side...Sv:Få .net att rendera snällare id'n?
Dock måste det väl finnas viktigare problem att lösa än hur kontroll-ID:n renderas på klientsidan? ;)Sv: Få .net att rendera snällare id'n?
Och det är ju enligt moderna valideringsregler (XHTML) så att man inte får utelämna id. Om du använder masterpages måste ID bli lite längre för att säkerställa att alla ID är unika på sidan.Sv:Få .net att rendera snällare id'n?
Vem kollar på idna på en html sida?Sv: Få .net att rendera snällare id'n?
Sv:Få .net att rendera snällare id'n?
<code>
public class ClientHyperLink : HyperLink
{
protected override void Render(HtmlTextWriter writer)
{
writer.AddAttribute(HtmlTextWriterAttribute.Href, NavigateUrl);
writer.RenderBeginTag(HtmlTextWriterTag.A);
writer.RenderEndTag();
}
}
</code>
det enda jag nu vill är att
this.text ska renderas som inner html (allså som element innehåll)
Hur fasiken får man till det med HtmlTextWriter?Sv:Få .net att rendera snällare id'n?
det går klart att lösa genom att göra detta
<code>
string hyperLink = string.Format(@"{1}", NavigateUrl, Text);
writer.Write(hyperLink);
</code>
men det skulle vara snyggare att göra via writer objektets metoder...Sv: Få .net att rendera snällare id'n?
<code>
protected override void Render(HtmlTextWriter writer)
{
writer.AddAttribute(HtmlTextWriterAttribute.Href, NavigateUrl);
writer.RenderBeginTag(HtmlTextWriterTag.A);
if (Text != null && Text != string.Empty)
Controls.Add(new LiteralControl(Text));
foreach (Control c in Controls)
c.RenderControl(writer);
writer.RenderEndTag();
}
</code>