Donnerstag, 7. März 2013

String-Formatierung mit benannten Variablen

Hallo Leute,

ich hatte aktuell wieder eine Aufgabe, und zwar aus unterschiedlichen Objekteigenschaften eine EMail-Adresse zu erzeugen. Dabei sollte das Erzeugungsmuster dynamisch definiert werden können.

Beispiel, wenn ich eine Klasse Person, mit der Eigenschaft Name, Surename und Age habe, sollte daraus ein Mailprefix erzeugt werden, nach dem Muster: {Surename:1}_{Name}_{Age}.

Wenn eine Instanz von Person nun folgende Werte hat:

Name: Mustermann
Surename: Max
Age: 30

sollte folgendes erzeugt werden: M_Mustermann_30.

Wichtig ist dabei, dass das Format sich ändern kann, also zB soetwas:

{Age:1}_{Name}.{Surename:1} --> 3_Mustermann.M


Dazu habe ich folgenden Beitrag gefunden:
FormatsWith

Diesen Code habe ich etwas angepasst, da dieser die Max-Längenangaben nicht unterstützt.
Folgendes ist dabei herausgekommen:
































Aufruf sieht dann einfach so aus:







Ich hoffe das kann euch etwas helfen.


mfg
Sebastian

Dienstag, 26. Februar 2013

MVC Sessionstate und ModelBinding

Hallo Leute,

so nach längerer Zeit wieder mal ein Beitrag.
Wer Projekte mit dem MVC-Framework umsetzt, der wird nicht um den Sessionstate herum kommen. Dabei gibt es viele Möglichkeiten auf diesen zuzugreifen, zB normal über den Sessionstate in den Controllermethoden. Ich möchte euch zeigen, wie man einen eigenen ModelBinder verwenden kann, um den Sessionstate zu verwenden. Vorteil ist, dass man die Actionmethoden wie gewohnt benutzt, und die gewünschten Informationen als Parameter übergibt. Man muss also nicht immer selbst auf die Sessionvariable zugreifen.

Also als erstes erstellt man eben eine Klasse, die man in der Session speichern möchte:








Danach erstelle ich mir immer gern eine Hilfsmethode, um typsicher auf die Session zuzugreifen:















Der Zugriff würde nun so aussehen:



















Da wir aber nicht in jeder ActionMethode diese Zeile schreiben möchten, und stattdessen das Parametersystem nutzen wollen, erstellen wir uns einen eigenen ModelBinder. Dazu implementieren wir das IModelBinder-Interface, aus dem Namespace System.Web.Mvc.











Wie ihr seht, nutzt dieser auch unsere Extensionmethode um die Daten aus der Session zu holen.
Als nächstes müssen wir diesen ModelBinder registrieren, damit die Runtime weiss, wann sie diesen verwenden muss.
















So, nun können wir unsere ActionMethode refaktorisieren, damit die SessionData als Parameter übergeben wird:

















Fertig :)
Der Vorteil ist nun, dass man jeder Methode, welche die SessionDatas benötigt einfach einen Parameter mitgeben muss, und der Rest wird durch die Laufzeit erledigt :)


Ich hoffe ich konnte euch wieder ein bisschen helfen, bis zum nächsten mal =)

mfg
Sebastian

Mittwoch, 9. Januar 2013

Frohes neues Jahr

Wünsch ich euch. Viel Glück in 2013, und hoffentlich viele neue und interessante Artikel =)

mfg
Sebastian

Sonntag, 23. Dezember 2012

Freitag, 14. Dezember 2012

Sharepoint 2013 Apps: Navigationsbar

Hallo,

wer sich schon mal mit SharePoint 2013 und dem App-Model beschäftigt hat, wird wissen, wie eine typische VisualStudio 2012 - Vorlage deployed aussieht; man sieht eigentlich nix.

Man kann aber relativ einfach eine Navigation reinbringen, dazu muss man nur die default.aspx bearbeiten:

















Hier sieht man, dass ich einfach 2 DIVS verwende, eines für die Navigation mit float:left, und ein weiteres für anderen Inhalt (hier ein XsltListViewWebPart).

Das Ergebnis sieht dann so aus:


Natrülich sollte man keine Inlinestyles verwenden, dass habe ich nur gemacht damit ihr einen besseren Überblick habt.

Das nächste mal wird es um echte Funktionalitäten in Apps gehen.


mfg
Sebastian

Dienstag, 11. Dezember 2012

InfoPath: Mit Objekten statt XML arbeiten

Hallo,

wer schon mal mit InfoPath gearbeitet hat weiss, dass man fast alles mit dem XPathNavigator machen muss. Eine andere Möglichkeit ist, für das XML des Formulars per XSD.exe oder Xsd2Code Code erzeugen, in diesen im Formular selbst verwenden. Ich werde dazu noch ein Beispiel erstellen....aber der Ansatz ist ja sicherlich erst mal klar. =)

mfg
Sebastian