| 

.NET C# Java Javascript Exception

2
Hallo Zusammen,
ich habe einige Validatoren für MVC Modelle geschrieben. In einem Fall möchte ich den zu validierenden Wert aber auch manipulieren und geändert in den Modelmember zurückschreiben.

Vieleicht hat einer von Euch eine gute Idee ob und wenn ja wie das zu bewerkstelligen ist ?

Thanx und Gruss
Jorgen
19.06.2013
Jorgen Schumann 1,6k 2 9
2 Antworten
1
Hallo,

vielleicht hilft das:

1.) Alle Properties ermitteln
2.) über das ergebnis iterieren und nach dem Attribute suchen.
3.) Wert aus dem Attribute auslesen und auf das Property setzen.

var foo = new Foo { FirstName = "Max", LastName = "Mustermann" };
var type = foo.GetType();

var fooProperties = type.GetProperties();
foreach (var propertyInfo in fooProperties)
{
var attribute = (ValidationAttribute) Attribute.GetCustomAttribute(propertyInfo, typeof(ValidationAttribute));
if (attribute != null)
{
propertyInfo.SetValue(foo, attribute.Value, null);
}
}


Dabei ist nur die Eigenschaft "LastName" mit dem Attribut (ValidationAttribute) annotiert.
19.06.2013
lbm1305 849 1 8
lbm1305 849 1 8
:-) da hätte ich auch selber drauf kommen können, mit ein bischen anpassung habe ich mein problemchen lösen können. danke dir
Jorgen Schumann 19.06.2013
Markierst Du dann bitte den Beitrag als beantwortet. Danke und einen schönen Tag :-)
lbm1305 20.06.2013
2
Mann muss noch folgendes beachten: wenn ein Modelmember (z.B. wie oben aufgezeigt) gändert wurde und das Model im Controller an die View übergeben wird,dann wird der neue Wert noch nicht von Razor gerendert, weil der Wert im ModelStateDictionary noch der alte ist.

Lösungsmöglichkeit:
public static void RefreshModelValue(this ModelStateDictionary modelState, string key,  string attemptedValue)
{
modelState.SetModelValue(key, new ValueProviderResult(attemptedValue, attemptedValue, CultureInfo.CurrentUICulture));
}
20.06.2013
Jorgen Schumann 1,6k 2 9

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH