ASP.NET

  • Ein ASP.NET MVC Camp (Arbeitstitel) in Köln

    Ich habe da die Idee eines ASP.NET MVC Camps (Arbeitstitel). Ein Tag Rund um ASP.NET MVC und das ganze drum herum. Es soll eine recht kompakte Veranstaltung sein, vielleicht so 20-30 Teilnehmer. Auch keine Konferenz, sonden in einem OpenSpace Rahmen. Freitag Abends bis Samstag Abend wird das ganze stattfinden. Am Freitag Abend wird gegessen, getrunken, geredet und der Samstag geplant. Samstags geht’s nun ans lernen, austauschen und verbessern . Im Kern ist dies ein WebCamp. Es geht also nicht nur im ASP.NET MVC sondern um die komplette WebEntwicklung. Folgende Themen kann ich mir vorstellen. ...

  • Unterlagen zu meinem ASP.NET MVC 3 Vortrag auf der VSone 2011

    Ich hatte die Ehre auf der http://vsone.de einen Vortrag zu ASP.NET MVC 3 erweiterte Techniken zu halten. Hier ist sind die Folien und der Beispielcode zum Download. ASP.NET MVC 3 erweiterte Techniken Technorati Tags: VSone,ASP.NET MVC

  • Vereinfachte Lokalisierung eines ViewModels in ASP.NET MVC

    Ich arbeite gerade an einer Anwendung die ich auch mehrsprachig anbieten möchte. Dabei sind mir ein paar Sachen aufgefallen die unhandlich sind. Hier dazu meine Lösungen Display-Name von Properties in ViewModels In ASP.NET MVC 3 kann ich mit der leichten Syntax [Display(ResourceType=typeof(SpeakertNetStrings), Name="Speaker_Session")] public string Fullname { get; set; } [Display(ResourceType=typeof(SpeakertNetStrings), Name="Speaker_Session")] public int SessionCount { get; set; } die passenden Resource-Strings angeben, dieser wird dann mit dem Label- bzw. LabelFor-HtmlHelper dargestellt. Da dies jedoch ein .NET 4 Attribute ist, funktioniert es unter .NET 3.5 nicht. Auch ist es...

  • StructureMap und MVC 3: Intialisierung und Verwendung

    Ich verwende als IoC-Container sehr gerne StructureMap, dies hauptsächlich weil man dort sehr einfach einen Großteil der Registrierung der Componenten über Konventionen erledigen kann. In ASP.NET MVC 3 RC gibt es nun eine einige Änderungen gegenüber AS.NET MVC 2. Nun veröffentliche ich deshalb hier meinen Standard-Initialisierungscode für StructureMap und MVC 3. Darauf aufbauen müssen natürlich die Besonderheiten der Anwendung berücksichtigt werden. Aber es ist ein guter Startpunkt. Die Standard-Konventionen Hiermit werden die möglichen Komponenten in MVC 3 registriert: Somit müssen ModelBinder und Validatoren etc. nicht mehr manuell den einzelnen Aufzählungen hinzugefügt werden. Es reicht...

  • ASP.NET MVC Action und die Database Connection, nun richtig

    Bei ASP.NET MVC ist es Best Practice wenn man für den Datenbank Zugriff eine Transaction beim Start der Action öffnet und zum Ende wieder schließt. Ich habe die eine oder andere “Lösung” dazu gesehen, die sich jedoch meist in den Request-LifeCycle der Application einklinken und somit “irgendwie” außerhalb der MVC Konzeptes sind und somit auch beim Zugriff auf andere Seiten oder gar statischen Resourcen auch Connection/Transactionen öffnen. Auch ich nutzte dies … aber nun nicht mehr. Die beste Lösung (jedenfalls aus meiner Sicht) ist ein eigener IActionInvoker der diese Aufgabe übernimm,. damit ist auch exakt den Gültigkeitsbereich der...

  • Ein SubText Blog mit dotnet-kicks.de Button

    dotnet-kicks.de erfreut sich in deutschen .NET Welt ja doch einiger Beliebtheit, also bietet es sich an dies auch im eigenen Blog zu unterstützen. Ich habe nun ein Control gebaut mit dem es ganz einfach geht. Als erstes erstellt man in dem Controls-Ordner seines Skins die Datei KickIt.ascx, und füllt diese mit folgendem Inhalt. <%@ Control Language="C#" ClassName="KickItDeControl" Inherits="Subtext.Web.UI.Controls.CurrentEntryControl"%> <% string urlUrl = UrlEncode(Entry.FullyQualifiedUrl ); string urlTitle = UrlEncode(HttpUtility.HtmlDecode(Entry.Title)); %> <a href="http://dotnet-kicks.de/kick/?url=<%=urlUrl%>&amp;title=<%=urlTitle%>"> <img src="http://dotnet-kicks.de/Services/Images/KickItImageGenerator.ashx?url=<%=urlUrl%>" border="0" alt="kick it on dotnet-kicks.de" /></a> Dies ist ein einfaches Control welches den dotnet-kicks.de-Code erzeugt. Nun muss...

  • Ein SubText Blog mit Flattr-Button

    Nutzt man SubText für das eigenen Blog und möchte man Flattr damit verwenden, so kann man dies auf verschiedenen Weise machen. Hier nun wie ich es gemacht habe. Als erstes erstellt man in dem Controls-Ordner seines Skins die Datei Flattr.ascx, und füllt diese mit folgendem Inhalt <%@ Control Language="C#" ClassName="FlattrControl" Inherits="Subtext.Web.UI.Controls.CurrentEntryControl"%> <script runat="server"> public string FlattrId {get;set;} </script> <% string htmlTitle = HttpUtility.HtmlDecode(Entry.Title).Replace("'","\""); %> <script type="text/javascript"> var flattr_btn = 'compact'; var flattr_uid = '<%=FlattrId%>'; var flattr_tle = '<%=htmlTitle%>'; var flattr_dsc = '<%=htmlTitle%>'; var flattr_cat = 'text'; var flattr_lng = 'de_DE'; var flattr_url = '<%=Entry.FullyQualifiedUrl%>'; </script> <script src="http://api.flattr.com/button/load.js" type="text/javascript"></script> Dies ist ein einfaches Control welches den Flattr-Code erzeugt. Nun muss man...

  • Globale Namespaces für die Razor-Syntax und den ASP.NET WebPages

    Wenn man bei WebForms nicht auf jeder Page oder jedem UserControl die notwendigen Namespace importieren möchte. So hat man diese in der Web.config hinterlegt. Dies funktioniert wunderbar bei WebForms und der WebForm-ViewEngine unter ASP.NET MVC. Mit den neuen WebPages (.cshtml) und der Razor-Syntax kann man mit @using Regularly.Models @using Regulary.Areas.Administration.Models auch entsprechende Namespaces der Template bekannt machen, Jedoch funktioniert der Weg über die web.config nicht (ob sich dies ändert steht wohl nicht nicht fest). Aber man einen anderen Weg gehen, dazu muss man beim Application-Start über die Klasse CodeGeneratorSettings die Namespaces hinzufügen. CodeGeneratorSettings.AddGlobalImport("Regularly.Models"); CodeGeneratorSettings.AddGlobalImport("Regularly.Extensions"); Diese Klasse befindet sich im Namespace Microsoft.WebPages.Compilation Technorati Tags: ASP.NET...

  • Neues Projekt: FluentMetadata

    Ich bastel da einem neuen Projekt rum. Dabei ist mehr oder weniger FluentMetadata “abgefallen”, bzw. es noch in der Entwicklung. Jedoch ist es zumindest mit ASP.NET MVC 2 schon funktionsfähig und es wird Zeit damit mal an die Öffentlichkeit zu gehen. FluentMetadata ist eine Möglichkeit Metadaten für Klassen zu definieren diese dann im weitere Programmablauf zu verwenden. Diese kann dann genutzt werden um andere Frameworks mit Informationen zu versorgen. Seit es nun für die Validierung oder Typ-Informationen. Ganz nach dem DRY Prinzip sollen diese nur an einer Stelle definiert müssen. Warum? Ich habe das...

  • Zwei Vorträge am 16.-17. Juni auf der APPs-Konferenz in Burghausen

    Ein weiterer Zwischenstopp meiner kleinen Vortrags-Sommerreise ist am 16. und 17. Juni in Burghausen. die APPs-Konferenz in Burghausen ist eine kleine und feine Konferenz mit wenigen aber guten Vorträgen, toller Stimmung und schönem Wissen-Transfer unter den Teilnehmern. http://www.apps-konferenz.de/ Meine Themen sind Mobile Web-Anwendungen für iPhone & Co mit ASP.NET MVC 2 Sketching von User Interfaces mit Balsamiq Mockup Also, meldet euch. Es gibt gute Vorträge, tolle Leute sowie schöne Giveaways.   Technorati-Tags: ASP.NET MVC,Mockup,Sketching,Konferenz,Burghausen,.NET

  • Am 10. Juni spreche ich bei der User Group Frankfurt

    Es ist mal wieder soweit, ich bin wieder Unterwegs und verlasse Köln um mal wieder woanders Vorträge zu halten. Die erste Station ist am 10. Juni bei der .net Usergroup Frankfurt. Meine Thema ist mal wieder ASP.NET MVC (kann wohl nichts anderes ;-), diesmal in der Version 2. Jedoch werden diesmal die Grundlagen nur einen kleinen Teil des Vortrags/Live Codings ausmachen. Den Abstrakt und die erforderliche Anmeldung (da es in einem Microsoft Gebäude stattfinden) findet Ihr http://www.dotnet-ug-frankfurt.de/Event/tabid/119/ID/39/Default.aspx Ich freue mich euch dort zu sehen und danach ins Brauhaus zum Fachsimpeln zu gehen. Also seht dies...

  • Zwei Properties beim ViewModel auf Gleichheit prüfen mit ASP.NET MVC 2

    Es gibt Anlässe bei denen man beim Input ViewModel prüfen muss ob zwei Properties den gleichen Inhalt haben. Ein typischer Fall ist die Kennwort-Eingabe in einem Webformular. ASP.NET MVC 2 bietet da nichts out of the Box, aber über die DataAnnotations-Validierung kann man sich einfach eigenen Attribute bauen die dies machen können. Vor einiger Zeit stellte Thomas Bandt eine Lösung vor, diese war mit bei den Property-Namen ein wenig zu tolerant (die Groß- und Kleinschreibung war egal) und es wurde ein eventuell angegebener Display Name nicht in die Fehlermeldung übernommen. Diese Lösung habe ich verbessert und stelle...

  • Input Validierung im Unit Test mit ASP.NET MVC 2

    Mit ASP.NET MVC 2 ist es ja nun möglich über DataAnnotations oder mit eigenen ModelValidatoren eine schnelle und einfache Validierung der Eingabedaten vorzunehmen. Dieses im Unit Test zu machen ist jedoch out of the Box nicht möglich. Thomas Bandt hat dazu mal einen Blog Beitrag geschrieben. Der sich jedoch rein auf DataAnnotations bezieht und keine anderen ModelValdator berücksichtigt. Dies ist natürlich nicht ganz so gut. Desweiteren funktioniert sie nur unter .NET 4 und man kann damit nicht den Programmfluss im Controller selbst testen (was macht dieser bei invaliden Daten?). Hier stelle ich eine Extension-Method vor die ohne diese...

  • Die VSone in München

    Die Tage war ich in München und habe mir die VSone angesehen.  Hier nun mein Endruck der Tage. Es war meine erste VSone, ich zuerst überrascht dass sie so kompakt ist. Ich schätze es waren so um die 350 Teilnehmer vor Ort. Dies finde ich positiv, dass ganze ist nicht so anonym und man läuft sich des öfteren über den Weg und hat somit viel Chancen mal wieder neue Leute kennen zu lernen. Dass ist ganz anderer Charme wie bei einem Konferenz mit mehreren tausend Teilnehmern. Mir hat dies sehr gefallen. Die Räumlichkeiten sind für die Art der...

  • Urls zu ASP.NET MVC Controller-Actions außerhalb eines Views erstellen

    Innerhalb eines ASPX-Views ist das erstellen eines Links bzw. einer Url einfach. Es gibt ja HtmlHelper.ActionLink() und MvcViewPage.Url um diese zu erzeugen. Nun gibt es Situation wo man keinen direkten Zugriff darauf hat an jedoch die Url zu bestimmten Action inklusive der richtigen Parameter braucht. So ist es in einer meiner Anwendungen notwendig E-Mails mit Links auf die Anwendung zu haben (Neues Kennwort zuteilen, Benutzer aktiveren etc.) Dies wird weder beim Controller noch im View veranlasst (und wenn man es doch macht sollte man dringend darüber nachdenken warum man dies macht und es seinlassen). Natürlich möchte man...

  • Prüfen ob alle Post-Controller-Actions dass ValidateAntiForgeryTokenAttribute haben

    Ein möglicher Angriff auf Web-Anwendungen ist Cross-Site Request Forgery (CSRF). Mit dem ASP.NET MVC Framework gibt es eine Möglichkeit solche Angriffe zu verhindern. Siehe dazu auch diesen Blog-Eintrag: Prevent Cross-Site Request Forgery (CSRF) using ASP.NET MVC’s AntiForgeryToken() helper. Jedoch passiert es mir des Öfteren dass ich vergesse daran zu denken die Actions entsprechend zu attributieren. Deshalb habe ich mir einen Unit-Test geschrieben der alle Controller-Action die auf POST reagieren überprüft ob sie dass ValidateAntiForgeryTokenAttribute haben. Damit er nicht bei mir versauert, hier der Test zur allgemeinen Verwendung. using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Web.Mvc; using DerAlbert.Community.Web.Controllers; using MbUnit.Framework; namespace...

  • Der .NET Open Space 2009 in Blaustein/Ulm

    Nur noch sieben Tage und der er geht los, der erste .NET Open Space für 2009 in Blaustein bei Ulm. Bis jetzt haben sich 65 Personen angemeldet. Somit ist viel Know-How in den unterschiedlichsten Bereichen vor Ort. Wenn ich mir die Teilnehmerliste ansehe verspricht es ein sehr interessantes Wochenende werden bei der Menge an Wissen und Interessen. Ich selbst werde wohl mindestens eine Session zu ASP.NET MVC vorschlagen, auf der User Group Tour wurde reges Interesse daran bekundet. Wer sich also nur Ansatzweise für Software-Entwicklung mit .NET Interessiert der sollte es nicht versäumen auch vom 11....

  • Wie man von einem UserControl auf ein anderes zugreift?

    Am besten gar nicht! Eine der Standard-Fragen von Foren und Newsgroups scheint mir zu sein wie man von Control A auf Control B zugreift. Oft übergreifend zwischend UserControls welche auf einer WinForm/WebForm eingesetzt wird. Bei ASP.NET wird dann oft versucht mit FindControl() dass jeweilige Control auf welches man nun unbedingt zugreifen muss zu suchen um dieses dann, sofern gefunden, entsprechend den Vorstellungen zu bearbeiten. Dann Frage ich mich, ob der Sinn von Objekt-Orientierung in Ansätzen verstanden wurde? Soll dieses UserControl wirklich nur auf dieser speziellen Seite mit eingesetzt werden? Warum dann ein UserControl? Was wird...

  • ASP.NET MVC Preview 5 und der Visual Studio 2008 Absturz.

    Vor nicht allzulanger Zeit sprach mich Alexander an ob sich bei mir auch Visual Studio sang und klanglos verabschiedete wenn eine .aspx Seite aus einem MVC- Projekt geöffnet wurde. Dies war damals bei mir nicht der fall. Ich erzeuge ein paar Projekte und alles war wunderbar.Der Fehler tauchte jedoch nicht nur bei ihm auf wie auf forums.asp.net zu lesen war. Eine für Ihn funktionierende Lösung war jedoch nicht dabei. Heute beim hinzufügen eines MVC Projektes zu einer vorhandenen Solution ereilte mich auch diese Problem und beim öffnen von .aspx und .js Dateien aus einem MVC Projekt verabschiedete sich mein...

  • Dunkles Visual Studio 2008 mit ReSharper 4

    Ich selbst benutze schon seit längeren auch einen "dunkles" Visual Studio, ich habe mir damals irgendeine Dark-Theme genommen und über die Zeit an meine Bedürfnisse angepasst. Dazu gehört unter anderem auch die Verwendung einer Schriftart für den Text-Editor die nicht über eine feste Laufweite verfügt Verdana. Darauf hat mich vor einiger Zeit Roland Weigelt drauf gebracht. Zusätzlich wird noch Segio UI für den Rest verwendet. Proportional und Schwarz Visual Studio arbeitet damit ohne Probleme und man hat den angenehmen Nebeneffekt das man mehr Text in eine Zeile bekommt. Anfangs ein wenig ungewöhnlich, aber man gewöhnt sich schnell dran....

  • Live Übertragung des Treffen der .net user group Köln am 6. Mai 2008 (heute)

    Hallo zusammen, die .net user group Köln plant heute Abend ein experiment. Wir wollen unser Usertreffen live im Internet streamen. So dass auch die Leute die nicht um Köln herum wohnen die Möglichkeit haben daran teilzunehmen. Die Sende-Adresse ab 19 Uhr ist http://www.mogulus.com/dnugkoeln Wir wissen noch nicht ob und wie es klappt (Bandbreite, Licht etc.), also  erscheint ruhig zahlreich und tragt bitte einen ordentlichen Nickname für den Chat ein. Die Themen heute sind Final Builder 6 Robert Wachtel Final Builder ist ein Build-Werkzeug mit dem...

  • Microsoft ASP.NET AJAX Extensions am 9. Januar 2007 in Köln

    Am 9. Januar 2007 findet das nächste User Treffen der ].net user group Köln statt, diesmal mit dem Microsoft ASP.NET AJAX Extensions als Hauptthema. Folgendes steht in dem Vortrag auf der Agenda Bestandteile der ASP.NET AJAX Extension AJAX ohne eigenes JavaScript WebServices aus dem Browser aufrufen Datenbindung Client & Server Einblick in die Client Controls Client-Animationen Das AjaxControlToolkit Erstellung eigener Erweiterungen Den Vortrag werde ich halten. Galileo-Computing hat zwei Bücher...

  • Ein XmlMembershipProvider sowie XmlRoleProvider für ASP.NET 2.0

    ASP.NET 2.0 bietet ein schönes Sicherheitskonzept mit Rollen und Benutzern die man an Resourcen (Webseiten, Menüeinträge usw) und auch an Methoden und Klassen binden kann. So dass das Framework direkt überprüfen kann ob ein angemeldeter Benutzer das darf was er versucht zu machen. Mitgeliefert werden eine Möglichkeit für den Microsoft SQL Server und das ActiveDirectory. Dies ist für ein paar wenige Benutzer, die schon eindeutig definiert sind, ein wenig wie mit Kanonen auf Spatzen schießen. Für eine kleine, aber doch recht flexible, Lösung bietet sich an die entsprechenden Daten im XML-Format zu hinterlegen. Das ist dass was die hier angebotenen...