ASP.NET: Twitter Feeds per XmlDataSource- und Repeater-Control in Websites einbinden

RSS- bzw. Atom-Feeds von Twitter, Blogs usw. lassen sich sehr einfach mit dem XmlDataSource-Control in die eigene Website einbinden. Dazu ist quasi keine einzige Zeile „richtiger“ Code notwendig, sonder lediglich zwei ASP.NET-Controls. Das Beispiel bezieht sich explizit auf einen Twitter Atom-Feed, lässt sich aber an jeden beliebigen anderen Feed anpassen. Wichtig: Immer genau die XML-Struktur […]

ASP.NET: Einfache Log-Datei schreiben

Muss mal schnell was mitgeloggt werden, bietet sich z.B. der StreamWriter an. using System.IO; … string fileName = String.Format(„log-{0}.txt“, DateTime.Now.ToString(„yyyy-MM-dd“)); string dataRow = String.Format(„{0}; {1}; {2}“, DateTime.Now, var1, var2); StreamWriter myFile = new StreamWriter(Server.MapPath(„~/App_Data/“ + fileName), true); myFile.WriteLine(dataRow); myFile.Close();

ASP.NET: Canonical-Link-Tag dynamisch anpassen und einfügen

Doppelte Inhalte mögen Suchmaschinen bekanntermaßen nicht. Doch meistens können Webseiten über http://domain.de und http://www.domain.de erreicht werden. Für die Suchmaschine sind das zwei unterschiedliche Dinge. Ein recht einfacher Ansatz mit ASP.NET kann so aussehen: // using System.Web.UI.HtmlControls; HtmlLink canonicalLink = new HtmlLink(); canonicalLink.Attributes[„rel“] = „canonical“; canonicalLink.Href = Request.Url.AbsoluteUri.Replace(„www.“, „“); Page.Header.Controls.Add(canonicalLink); Das ganze kommt dann z.B. in den Event-Handler Page_Load (Master-Datei, […]

ASP.NET: Telefonliste mit Initiale per Repeater auflisten

Hier mal ein Quick ’n‘ Dirty-Ansatz einer Telefonliste mit Initialen. .aspx <asp:Repeater ID=“Repeater1″ runat=“server“> <HeaderTemplate> <table> </HeaderTemplate> <ItemTemplate> <%#SetInitial(Eval(„Nachname“).ToString())%> <tr> <td><a href=“profil.aspx?ID=<%#Eval(„ID“)%>“> <%#Eval(„Nachname“)%>, <%#Eval(„Vorname“)%></a></td> <td><%#Eval(„Telefon“)%></td> <td><%#Eval(„EMail“)%></td> </tr> </ItemTemplate> <FooterTemplate> </table> </FooterTemplate> </asp:Repeater> .aspx.cs // C# private char initialOld; public string SetInitial(string lastName) { char initial = Convert.ToChar(lastName.Substring(0, 1).ToUpper()); if (initial == ‚Ä‘) initial = ‚A‘; […]

ASP.NET: TextBox JavaScript-OnClick-Ereignis hinzufügen (= Pseudo OnClientClick)

Leider gibt es bei TextBoxen kein OnClientClick-Ereignis, um z.B. bei Klick darauf den Inhalt zu entfernen. protected void Page_Load(object sender, EventArgs e) { TextBox1.Attributes.Add(„onclick“, „this.value=“;“); } Ein anderes Beispiel: Einen LinkButton „disablen“ bei OnClick. (Gesehen bei http://www.dotnetsnippets.com) protected void Page_Load(object sender, EventArgs e) { LinkButton1.Attributes.Add(„onclick“, „this.disabled=true; this.onclick=function() { return false; }“); }

ASP.NET: Daten (z.B. Datensatz-ID) einem Button per CommandArgument mitgeben

Hier im Beispiel: Übergabe der ID beim Klicken eines Buttons in einem Repeater: <asp:Repeater ID=“Repeater1″ runat=“server“> <ItemTemplate> <%# Eval(„Title“)%> <asp:Button ID=“Button1″ runat=“server“ Text=“löschen“ CommandArgument=′<%# Bind(„ID“)%>′ OnCommand=“Button1_Command“ /><br /> </ItemTemplate> </asp:Repeater> … protected void Button1_Command( object sender, CommandEventArgs e ) { int delId = Convert.ToInt32(e.CommandArgument); … }

ASP.NET: Mehrere Buttons / Formulare auf einer Seite

Hat man mehrere Buttons auf einer Seite, muss man explizit angeben, welcher Button beim bestätigen über die Tastatur (Enter), ausgelöst werden soll. Das liegt daran, daß nur ein form-Tag verwendet werden darf. Ein bestimmter Button kann z.B. im Form-Tag angegeben werden: <form id=“form1″ runat=“server“ defaultbutton=“Button2″> Bei mehreren Formularen dann einfach mit einem Panel umschließen: <asp:Panel […]

Verzeichnisschutz mit ASP.NET FormsAuthentication

Hier mal eine Copy’n’Paste-Vorlage: Auf alle Inhalte eines Verzeichnisses „CMS“ kann nur bei erfolgreicher Anmeldung zugegriffen werden. Benutzername und MD5-kodiertes Passwort werden in der web.config hinterlegt. root/web.config <?xml version=“1.0″ encoding=“utf-8″?> <configuration> <appSettings> <add key=“username“ value=“admin“ /> <add key=“password“ value=“A13EE062EFF9D72…“ /> </appSettings> <connectionStrings /> <system.web> <compilation debug=“true“ /> <authentication mode=“Forms“> <forms cookieless=“UseUri“ defaultUrl=“~/CMS/Default.aspx“ loginUrl=“~/Login.aspx“> </forms> </authentication> […]

ASP.NET: SQL-Injection vermeiden

SQL-Injection lassen sich in ASP.NET sehr einfach vermeiden. Sowohl bei der Verwendung von WebControls als auch „von Hand“. Hier am Beispiel einer AccessDataSoucre mit einer Übergabe der ID in der URL (= GET): <asp:AccessDataSource ID=“AccessDataSource1″ runat=“server“ SelectCommand=“SELECT * FROM Tab1 WHERE ID = ?“> <SelectParameters> <asp:QueryStringParameter Name=“ID“ QueryStringField=“ID“ Type=“INT32″ /> </SelectParameters> </asp:AccessDataSource> Per Code (ohne DataSoucre-Controls) […]