Jag använder ofta HtmlControls för att slippa massor med autogenerad viewstate kod och skit. Jag använder enbart Asp:controler där extra dynamik krävs... såhär ser koden ut nu har du testat image.ClientId="" Går inte att göra image.ClientId = string.empty; och ja, jag är objekt taliban. Viewstaten slipper jag endå..slippa id på client side för HtmlControls
Men en grej som stör mig är att jag måste ju ange ett id för att kunna styra HtmlControlen från codebehind filen, men id renderas även på clientside vilket är onödigt i många fall där man inte behöver hålla kolla på id vid tillexempel postback ett exempel är en <img> i en asp repeater, då renderas ett fult ID, ex attachmentsRepeater_ctl00_achImg. Jag har inge som helst intresse av att kunna identifiera denna bild vid en eventuell postback så ID är överflödigt...
Kan man stänga av ID't på clientside?Sv: slippa id på client side för HtmlControls
<code>
private void attachmentsRepeater_ItemCreated(object sender, RepeaterItemEventArgs e)
{
string attachment = e.Item.DataItem.ToString();
string atPath = ConfigurationManager.AppSettings["webmail.attachmentspath"];
string mailAtPath = string.Format(@"{0}/user{1}-mail{2}/{{0}}", atPath, mail.UserID, mail.MailID);
string filePageLink = string.Format(@"file.aspx?file={0}&userid={1}&mailid={2}",
Server.UrlEncode(attachment), user.UserID, mail.MailID);
string javaOnClickCode = "window.open(this.href);return false;";
HtmlAnchor imageHref = (HtmlAnchor)e.Item.FindControl("imageHref");
HtmlAnchor textHref = (HtmlAnchor)e.Item.FindControl("textHref");
HtmlImage image = (HtmlImage)e.Item.FindControl("achImg");
imageHref.HRef = filePageLink;
textHref.HRef = filePageLink;
textHref.InnerHtml = Server.HtmlEncode(attachment);
image.Src = filePageLink + "&icon=true";
image.Alt = Server.HtmlEncode(attachment);
switch(System.IO.Path.GetExtension(attachment).ToLower())
{
case ".jpg":
case ".gif":
textHref.Attributes["onclick"] = javaOnClickCode;
imageHref.Attributes["onclick"] = javaOnClickCode;
break;
}
}
</code>Sv:slippa id på client side för HtmlControls
Annars kan du ju helt enkelt dunka in html-koden... lägg den i en konstant eller kanske en literal som är osynlig och sätt det dynamiska med String.Format()
(Högre prestanda - och likvärdigt om du inte bryr dig om Viewstate. Möjligen fulare kod om man är objektTaliban).Sv: slippa id på client side för HtmlControls