Tags: , | Posted by AlexanderZeitler on 11/30/2006 11:11 AM | Comments (5)

Es ist ja hinlänglich bekannt, dass der ASP.NET ViewState für den Entwickler zwar praktisch, für den Betrachter der Seiten jedoch schlicht nervig sein kann. Nämlich dann, wenn der ViewState sehr groß wird und aufgrund der Tatsache, dass er in der Seite transportiert wird, die Seite sehr lange läd.

Verschärft wird die Problematik dadurch, dass der ViewState als Hidden-Field relativ weit oben in der Seiten-Definition erscheint, sodass der eigentliche Content der Seite erst dann geladen wird, wenn der ViewState komplett geladen wurden.

Abhilfe schafft ein einfacher Trick: Man verbannt das ViewState-Hidden-Field einfach ans Seitenende.

Sehr elegant gelöst hat das Mads Kristensen mit seinem ViewStateModule, das als HttpModul nur in der web.config eingetragen werden muß und somit für alle ASP.NET-Seiten den ViewState an das Seitenende setzt. Damit ist der Änderungsaufwand gleich null.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: | Posted by AlexanderZeitler on 11/30/2006 10:59 AM | Comments (2)

Perikles C. Stephanidis hat den Amadeus .NET Assembly Browser entwickelt, eine Windows-Shell-Erweiterung, die für .NET-Assemblies einen weiteren Reiter im Eigenschaften-Fenster der Datei einklinkt, über den sich über einen Objekt-Browser die Klassen, Methoden usw. in der Assembly anzeigen lassen.

Nicht integriert ist aber die Möglichkeit, die Assembly zu disassemblieren - eine Schnittstelle zum Reflector sollte hier aber sicher machbar sein ;-)

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , | Posted by AlexanderZeitler on 11/27/2006 7:52 PM | Comments (0)

Das Patterns & Practices Team hat ein neues Projekt am Start: Den Validation Application Block. Mehr dazu gibts im Blog von Tom Hollander.

Leider ist noch kein Download verfügbar, die vorgestellten Features sind aber schon mal sehr vielversprechend.

Mein eigenes Validator-Projekt ist jetzt jedenfalls erstmal auf Eis gelegt ;-)

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , | Posted by AlexanderZeitler on 11/24/2006 9:13 AM | Comments (0)

Will man Bilder, die  sich im App_Themes-Ordner befinden, referenzieren, benötigt man folgenden Code: 

Im .skin-File:

<asp:Image SkinID="Image1" ImageUrl="images/MyImage.jpg" runat="Server"/>

Im .aspx-Form:

<asp:Image SkinID="Image1" runat="Server" ID="Image1"/>

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , | Posted by AlexanderZeitler on 11/23/2006 1:52 PM | Comments (1)

Heute hatte ich mit einem seltsamen Verhalten des Data Acces Application Blocks bei der Enterprise Library 2006 zu kämpfen:

Meine Konfiguration für einen DataLayer, die ich mit dem Enterprise Library Configuration Tool erstellt hatte, sah wie folgt aus: 

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, 
Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null">
  </configSections>
  <dataConfiguration defaultDatabase="Quickstart">
  <connectionStrings>
    <add name="Quickstart" connectionString="Database=Quickstart;Server=(local)\SQLEXPRESS;Integrated Security=SSPI;"
      providerName="System.Data.SqlClient">
  </connectionStrings>
</configuration>

Die Datenzugriffsmethode startete wie folgt:

Database db = DatabaseFactory.CreateDatabase();

Soweit - so gut, sollte eigentlich problemlos funktionieren. Allerdings erhielt ich beim Debuggen immer eine NullReferenceException beim Aufruf der CreateDatabase()-Methode:

"Object reference not set to an instance of an object."

Der Stack-Trace sah wie folgt aus:

at Microsoft.Practices.EnterpriseLibrary.Data.DatabaseConfigurationView.get_DefaultName()
at Microsoft.Practices.EnterpriseLibrary.Data.DatabaseMapper.MapName(String name, IConfigurationSource configSource)
at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.ConfigurationNameMappingStrategy.BuildUp(IBuilderContext context, Type t, Object existing, String id)
at Microsoft.Practices.ObjectBuilder.BuilderBase`1.DoBuildUp(IReadWriteLocator locator, Type typeToBuild, String idToBuild, Object existing, PolicyList[] transientPolicies)
at Microsoft.Practices.ObjectBuilder.BuilderBase`1.BuildUp(IReadWriteLocator locator, Type typeToBuild, String idToBuild, Object existing, PolicyList[] transientPolicies)
at Microsoft.Practices.ObjectBuilder.BuilderBase`1.BuildUp[TTypeToBuild](IReadWriteLocator locator, String idToBuild, Object existing, PolicyList[] transientPolicies)
at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.EnterpriseLibraryFactory.BuildUp[T](IReadWriteLocator locator, IConfigurationSource configurationSource)
at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.EnterpriseLibraryFactory.BuildUp[T](IConfigurationSource configurationSource)
at Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ObjectBuilder.NameTypeFactoryBase`1.CreateDefault()
at Microsoft.Practices.EnterpriseLibrary.Data.DatabaseFactory.CreateDatabase()
at SampleApplication1.DataAccess.Sql.Location.Insert(Location Location) in C:\Projects\SampleDataLayer\DataAccess.Location.cs:line 62

Nach einigem Suchen kam ich der Ursache auf den Grund: Ich hatte ein UnitTest-Projekt zum DataLayer hinzugefügt, welches dann zum Debuggen aufgerufen wurde. Und eben dieses UnitTest-Projekt hatte keine App.config, die die Data Access Application Block Konfiguration beinhaltete.

Lösung: einfach die SampleApplication1.DataAccess.dll.config in das Debug-Verzeichnis des UnitTest-Projektes mit dem DLL-Namen des Test-Projektes speichern, also z.B. SampleApplication1.DataAccessTest.dll.config.

Problem gelöst.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: | Posted by AlexanderZeitler on 11/23/2006 11:19 AM | Comments (7)

Eigentlich wollte ich ja nichts dazu schreiben, aber es hat in den letzten Tagen derart zugenommen, dass ich mein Schweigen brechen muss ;-)

In den 80er bzw. 90er Jahren galten bekanntermaßen die Opel-Fahrer (Manta / Astra insbesondere, jeder auf seine Art extrem) als "die Freaks".

Über die Jahre hinweg hat sich nun bei mir die Meinung erhärtet, dass sich "die Freaks" nun eher unter den VW- und Audi-Fahrern finden.

Warum?

  • Wenn ich auf der Autobahn unterwegs bin, kann ich davon ausgehen, dass in über 80% der Fälle bei offensichtlich stockendem oder stehenden Verkehr von Audi-Fahrern (vorzugsweise A6 Avant) gedrängelt wird.

  • Ebenfalls Autobahn und ebenfalls mind. 80%: ohne Blinker die Fahrspur wechseln, egal ob von rechts nach links oder umgekehrt und grundsätzlich so, dass andere Verkehrsteilnehmer bremsen (also richtig bremsen, damit es nicht kracht) müssen. Vorzugsweise: Audi A3, VW Golf (jede Baureihe), VW Polo.
    Nicht zu vergessen, dass natürlich solange hinter dem Vordermann hergefahren wird, bis garantiert Verkehr von hinten kommt - die verkehrsfreie Lücke vorher bringt ja keinen Kick.

  • Ampeln waren ja bisher eher so zu verstehen, dass bei Rot gehalten wird, bei Grün gefahren. Offenbar hat sich das geändert: Anfang der Woche fuhr ein VW Passat (Kombi) vor mir auf eine grüne Ampel zu, niemand steht an der Ampel, er fährt und fährt - und bremst. Er hält an der GRÜNEN Ampel! Ich hupe, die Ampel wird gelb, er fährt los - ich stehe an der roten Ampel. Danke.

    Am gleichen Tag, etwas später: Ich fahre hinter einem Audi A4 und einem VW Sharan (WauWau-On-Tour-Aufkleber auf der Heckscheibe) auf eine ROTE Baustellen-Ampel (hatte kurz vorher erst auf rot geschalten) zu, Audi und VW halten kurz an der ROTEN Ampel (der Gegenverkehr auf der einspurigen Straße muß jeden Moment grün bekommen). Plötzlich fahren beide los trotz ROTER Ampel.

    Auf zum nächsten Beispiel, geschehen vor ca. 30 Min. Parallelen zum ersten Beispiel mögen den einen oder anderen verblüffen: Besagte Baustellen-Ampel, diesmal ist die Ampel noch GRÜN. Vor mir ein VW Polo. Polo nähert sich der IMMER NOCH GRÜNEN Ampel. Polo ist kurz vor der GRÜNEN Ampel. Polo steigt in die Bremsen als gäbs kein morgen - und steht. Ampel schaltet um: gelb. rot.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , | Posted by AlexanderZeitler on 11/23/2006 8:04 AM | Comments (1)

Eilon Lipton hat einen ASP.NET AJAX JavaScript Class Browser entwickelt, der es erlaubt die ASP.NET AJAX Client-Bibliotheken zu durchforsten - sehr praktisch...

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , | Posted by AlexanderZeitler on 11/22/2006 9:35 PM | Comments (1)

Microsoft hat das XML Notepad 2007 - den Nachfolger des im September veröffentlichten XML Notepad 2006 - veröffentlicht.

Hauptsächliche Neuerungen sind die Unterstützung für die Installation unter Windows Vista sowie ein Standard-XSLT, welches verwendet wird, wenn kein XSLT zugeordnet ist.

Damit wird praktisch einfach die Struktur des XML-Dokuments dargestellt:

Weiters wurden einige Bugs gefixt und die Performance verbessert.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , | Posted by AlexanderZeitler on 11/22/2006 8:46 PM | Comments (0)

Unter http://www.asp.net/cssadapters/ steht die Version 1.0 der ASP.NET 2.0 CSS Friendly Control Adapters zum Download bereit.

Die CSS Control Adapter erlauben es dem Entwickler, das HTML-Markup, das von ASP.NET Controls erzeugt wird, selbst zu beeinflussen, wodurch es möglich wird, CSS besser zu unterstützen.

Weitere Details gibts im RTM-Posting von RussHelfand

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , | Posted by AlexanderZeitler on 11/22/2006 7:01 AM | Comments (0)

Microsoft hat gestern ein Update für das AJAX Control Toolkit veröffentlicht. Grund für die kurzfristige Veröffentlichung waren Probleme mit der referenzierten Microsoft.Web.Extensions.Design.dll im erst vor knapp zwei Wochen veröffentlichten Release.

Außerdem wurden die Top 5 Issues gefixt, die User gepostet hatten.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5