Hi,
ich möchte einem Html Element im C# Code ein Attribut hinzufügen welches im string ein ' besitzt.
protected void repeaterDays_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
string navfunc = @"navigate('"+this.var.ToString()+"')";
HtmlControl navigate = (HtmlControl)e.Item.FindControl("LinkOfDay");
navigate.Attributes.Add("onclick", navfunc.Normalize());
counter++;
}
im Quellcode zeigt er mir jedoch immer den ASCII Dez Code an:
' var '
Wie kann ich das ändern? Ich dachte das mache ich schon durch das @ 😃
EDIT: Der Code hängt in einem Repeater. Deswegen auch e.Item.FindControl(). Wie ändere ich denn bei einem string das Encoding? Oder greife ich auf das Attribut zurück?
Du musst wenn du den String in die Datei schreibst, dass Encoding richtig einstellen.
Post am besten den Code den du benutzt um den String in die Datei zu schreiben.
Wie kann ich das ändern? Ich dachte das mache ich schon durch das @ 😃
Ok. Dein Link bringt mir jetzt aber nicht viel 😃
Bin aber immernoch nicht weiter damit. Encoding ist mir natürlich ein Begriff. Aber wie ich das in diesem Fall anwenden soll, weiß ich leider nicht.
lass mal das ".Normalize()" weg
MfG
Jürgen
ASP.NET Zone | gutsch-online | sharpcms | .NET Stammtisch Konstanz-Kreuzlingen | See# Party
Das .Normalize() war nur zu Testzwecken. Hat aber leider auch nichts geholfen. Oh man so ein kleines Problem und ich verzweifel hier 😄
Hallo,
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
ASP.Net Class
<asp:Repeater ID="repeaterDays" runat="server" OnItemDataBound="repeaterDays_ItemDataBound">
<ItemTemplate>
<li><a href="#" id="LinkOfDay" runat="server"><span class="day">
<asp:Label ID="labelDate" runat="server" /></span></a></li>
</ItemTemplate>
</asp:Repeater>
CS Class
protected void repeaterDays_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
/* ... */
string navfunc = "navigate('" + this.counter.ToString() + "')";
HtmlControl navigate = (HtmlControl)e.Item.FindControl("LinkOfDay");
navigate.Attributes.Add("onclick", navfunc);
counter++;
}
Im Quellcode steht nachher:
<li><a href="#" id="repeaterDays_ctl00_LinkOfDay" onclick="navigate(&.#39 0 &.#39)"><span class="day">
<span id="repeaterDays_ctl00_labelDate">8/30/2010</span></span></a></li>
Es sollte aber heißen:
<li><a href="#" id="repeaterDays_ctl00_LinkOfDay" onclick="navigate('0')"><span class="day">
<span id="repeaterDays_ctl00_labelDate">8/30/2010</span></span></a></li>
Das ändern des Metatags
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
in UTF-8, ISO-8859-1, oder so bringt auch nichts. Gibts doch nicht 😉
Hallo sakanoue,
ich kann Dein problem leider nicht reproduzieren.
Hier mein Testcode:
die .aspx
<%@ Page Language="C#" AutoEventWireup="true" EnableViewState="false" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head runat="server">
<title>test</title>
</head>
<body>
<div>
<form runat="server">
<ul><asp:Repeater runat="server" ID="Repeater1">
<ItemTemplate>
<li><a id="LinkOfDay" runat="server"><%# DataBinder.Eval(Container.DataItem, "Name") %></a></li>
</ItemTemplate>
</asp:Repeater></ul>
</form>
</div>
</body>
</html>
der CodeBehind:
public partial class _Default : System.Web.UI.Page
{
public class ValueObj
{
public ValueObj(string val) { Name = val; }
public string Name{ get; set; }
}
public List<ValueObj> myVals = new List<ValueObj>();
int counter = 0;
protected void Page_Load(object sender, EventArgs e)
{
myVals.Add(new ValueObj("Item1"));
myVals.Add(new ValueObj("Item2"));
myVals.Add(new ValueObj("Item3"));
Repeater1.DataSource = myVals;
Repeater1.ItemDataBound += repeater1_ItemDataBound;
DataBind();
}
protected void repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
string navfunc = @"navigate('" + counter.ToString() + "')";
HtmlControl navigate = (HtmlControl)e.Item.FindControl("LinkOfDay");
navigate.Attributes.Add("onclick", navfunc);
counter++;
}
}
Das liefert bei mir folgenden Output:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head><title>
test
</title></head>
<body>
<div>
<form name="ctl01" method="post" action="Default.aspx" id="ctl01">
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTEzNjYwMjA1MjRkZJcpsJBcPu04MicWB+sQzRzwkSdc" />
</div>
<ul>
<li><a id="Repeater1_ctl00_LinkOfDay" onclick="navigate('0')">Item1</a></li>
<li><a id="Repeater1_ctl01_LinkOfDay" onclick="navigate('1')">Item2</a></li>
<li><a id="Repeater1_ctl02_LinkOfDay" onclick="navigate('2')">Item3</a></li>
</ul>
</form>
</div>
</body>
</html>
Sieht alles OK aus. Das Problem muss noch woanders liegen.
Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
Ich habe zu Testzwecken noch einmal ein neues Projekt mit deinen Daten erstellt und es kommt wieder das Problem 😄
Seltsam.
Ich benutze VS2010 Prof. 4.0 Framework. in der Web.Config steht nichts besonderes drin. hmpf.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
</title></head>
<body>
<div>
<form method="post" action="WebForm1.aspx" id="Form1">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" />
</div>
<ul>
<li><a id="Repeater1_LinkOfDay_0" onclick="navigate(&.#39;0&.#39;)">Item1</a></li>
<li><a id="Repeater1_LinkOfDay_1" onclick="navigate(&.#39;1&.#39;)">Item2</a></li>
<li><a id="Repeater1_LinkOfDay_2" onclick="navigate(&.#39;2&.#39;)">Item3</a></li>
</ul>
</form>
</div>
</body>
</html>
den Punkt bei &.#39 weg denken. Weil er das hier im Forum automatisch in ' konvertiert 😃
GELÖST. Lag nicht am Encoding. Der Code wurde richtig übergeben. Einen genauen Grund warum es vorher nicht geklappt hat, gibt es nicht.