Archive for the ‘ASP.NET’ Category

Render ASP.NET Controls to HTML String

Tuesday, July 6th, 2010

Kleiner Quickie, wie man Controls in ein HTML String umwandelt…

public string RenderControl(Control ctrl) 
{
    StringBuilder sb = new StringBuilder();
    StringWriter tw = new StringWriter(sb);
    HtmlTextWriter hw = new HtmlTextWriter(tw);
 
    ctrl.RenderControl(hw);
    return sb.ToString();
}

IHttpHandler und Sessions

Monday, September 8th, 2008

Wenn man den IHttpHandler in ASP.NET benutzt und will gleichzeitig auf das Session-Objekt zugreifen wird man mit einer NullReference-Exception belohnt.

Die Lösung ist denkbar einfach, wie auch trivial! Man sollte zusätzlich zur IHttpHandler Schnittstelle auch noch die System.Web.SessionState.IRequiresSessionState Schnittstelle referenzieren. Dann klappt’s auch mit der Session.

Gesehen in: Ankes C# – Blog

Must have Visual Studio 2008 AddIn’s

Monday, March 3rd, 2008

Für meine tägliche Arbeit sind folgende Visual Studio 2008 AddIn’s von unschätzbaren Wert.

CopySourceAsHTML
Für alle Blogger ist dieses AddIn interessant. Es kopiert den markeirten Source und wandelt es in HTML um und ich kann es dann für das Web einfügen. Link zur Software

SmartPaster
Der SmartPaster ist ein AddIn mit den man einen Text in Visual Studio 2008 Kopiert. Man hat anders als “CTRL+C” die Wahl, dass das ganze als Kommentar, als String Variable oder als StringBuilder Objekt eingefügt wird. Link zur Software

GhostDoc
Roland Weigelt’s Ghost Doc ist ein kleines Magic Tool. Mit den kann man eine komplette Software innerhalb 5 Minuten Dokumentieren. Einfach den Cursor in einer Funktion legen und dann “CTRL+SHIFT+D” drücken und staunen. Auch wenn manchmal Käse rauskommt ist dieses Tool Gold Wert. Link zur Software

Connection String Platzhalter “|DataDirectory|”

Thursday, December 6th, 2007

Es ist eine Einstellung, die ich mir eigentlich nie merken kann. Aber dafür ist ja mein Blog da.

In SQL Server 2005 ist es möglich auch eine Datenbankdatei (*.mdf) dynamisch anzubinden. Das ist auch recht gut für Web Anwendungen. Hier sollte sich die Datenbankdatei(en) im “App_Data” Verzeichnis befinden. Im Sql Connection String darauf zu? Einen absoluten Pfad anzugeben ist nicht ratsam. Aber dafür gibt es den Platzhalter “‘|DataDirectory|”. Der verweist auf das “App_Data” Verzeichnis und schon ist die Welt wieder in Ordnung

Beispiel:

1
Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|database.mdf; Integrated Security=True;User Instance=True

Debugger in Javascript

Wednesday, November 7th, 2007

Wer wie ich mit Visual Studio arbeitet wird irgendwann mal die Stop-Marker für den Sourcecode lieben. In Javascript funktionieren diese Marker leider in externen Javascript dateien.

 1   <script type=”text/javascript”src=”js/extern.js”>

 2   </script >

Hat man auf der ASPX Seite direkt einen Javascript-Block eingesetzt dann kann man mit Visual Studio kein Stop-Marker mehr setzen.

 1   <script type=”text/javascript”>

 2      

 4      function Foo() {

 5         

 6         debugger;

 7         alert(“Hallo Welt!”);

 8         

 9      }

10   </script >

Abhilfe schafft der befehl “debugger” in ein Javascript.

Beim Ausführen des Befehls “Foo” hält Visual Studio in der Zeile “debugger” an und unterbricht die Ausführung. Jetzt kann man die Vorzüge des Visual Studio Deuggers benutzen. :-)

Visual Studio 2005 F5 debuggen bei ASP.NET Anwendungen beschleunigen

Thursday, August 23rd, 2007

Lange hab ich mich darüber geärgert. Bei größeren ASP.NET Anwendungen ist das starten des Debuggers (F5) sehr langsam. Oftmals musste ich mehr als eine Minute warten, bis der Webbrowser gestartet wird und ich die Anwendung debuggen kann.

Im KB 936344 wird von Microsoft beschrieben, wie man das Starten verbessern kann.

Lösung 1:

  1. Visual Studio 2005 öffnen
  2. ASP.NET Anwendung öffnen
  3. Menü “Debuggen” öffnen und den Menüpunkt “Alle Haltepunkte löschen” auswählen
  4. Geschwindigkeit prüfen.

Lösung 2:

  1. Visual Studio 2005 öffnen
  2. Menü “Extras” und anschließend “Optionen” auswählen.
  3. Bereich “Debugger” auswählen
  4. “Quelldateien müssen exakt mit der Originalversion Übereinstimmen” deaktivieren

Lösung 3 (nix für Sicherheitsfanatiker):

Das Projektverzeichnis für den Virenscanner aussperren. Somit wird unterdrückt, dass der Sourcecode jedesmal durch den Virenscanner läuft, wenn diese verwendet werden.

.NET 2.0 Dateizugriff in Design Time mode

Wednesday, August 22nd, 2007

Das Problem ist, das Server Controls in ASP.NET keinen direkten Bezug auf die Dateien des Webservers haben.

Wenn, z.B. ein Image Control das Property “ImageUrl” mit “~/image /test.jpg” gefällt wurde. Kann das Kontrol in der DLL äber “Server.MapPath(ImageUrl)” nicht darauf zugreifen. Schuld daran ist, dass die Objkete

  • Server
  • Response
  • Request
  • Einige Properties von “Page”

im DesignMode “NULL” sind.

Wie geht’s dennoch?

Die Interfaces ISite, IWebApplication und IProjectItem helfen da weiter.

Folgender Source sollte Weiterhelfen:

 1 IWebApplication webApp =(IWebApplication)

 2    Site.GetService(typeof(IWebApplication));

 3 

 4 string imageUrl  = “~/images/sample.txt”;

 5 IProjectItem item =

 6    webApp.GetProjectItemFromUrl(imageUrl);

 7 

 8 string physicalFileName = item.PhysicalPath;

Diesen Weg hab ich im Blog vom Armen Ayvazyan gefunden.

Control Life Time Cycle

Wednesday, August 15th, 2007

Nachdem ich jedesmal auf diese Frage stoße hab ich mal den Life Time Cycle einer ASP.NET Seite / Controls aufgezeichnet. Leider findet man in den Manuals von Microsoft sehr schwer die Information. :-(

ASP.NET Control Lifecycle

Default Button in ASP.NET setzen

Tuesday, July 10th, 2007

Um ein Button in ASP.NET als Defaultbutton zu setzen, benötigt man folgenden Code:

 1 this.Form.DefaultButton = Button1.UniqueId;

und für den Default Focus einer Textbox benötigt man folgenden Code:

 1 this.Form.DefaultFocus = TextBox1.ClientId;

Das Problem mit dem Login

Thursday, June 21st, 2007

Wer eine ASP.NET Webseite mit “Form-Authentification” entwickelt benötigt in der Regel eine “Login.aspx” Seite. Das dumme daran ist, dass die Codebehind Klasse “Login” heißt.

In der Entwicklungsumgebung gibt es keine Probleme, allerdings in der Live-Umgebung. Dort stört sich ASP.NET mit den Klassennamen “Login” und bringt eine Fehlermeldung.

Die Lösung: Den Codebehind Klassennamen von “Login” in “_Login” umbenennen und dann ist der Spuk vorbei. :-)