Beispiel #1
0
 /// <summary>
 /// Die Werte für die Binding des Models an die Session schreiben.
 /// </summary>
 /// <param name="controllerContext"></param>
 /// <param name="bindingContext"></param>
 public static void WritePropertyValuesToSession(ControllerContext controllerContext, ModelBindingContext bindingContext)
 {
     if (controllerContext.HttpContext.Session != null)
     {
         SessionValueProvider sessionValueProvider = SessionValueProvider.FromBindingContext(bindingContext);
         SessionPersister.WriteToSession(controllerContext.HttpContext.Session, sessionValueProvider);
     }
 }
        /// <summary>
        /// Erzeugt einen ValueProvider aus dem BindingContext.
        ///
        /// Anwendungsfall:
        /// Die Werte sollen aus dem Request gelesen werden.
        /// </summary>
        /// <param name="bindingContext"></param>
        /// <returns></returns>
        public static SessionValueProvider FromBindingContext(ModelBindingContext bindingContext)
        {
            IDictionary <string, ValueProviderResult> valueProviderResults = new Dictionary <string, ValueProviderResult>();

            foreach (KeyValuePair <string, ModelMetadata> modelMetadata in bindingContext.PropertyMetadata)
            {
                string key = string.Format("{0}.{1}", bindingContext.ModelName, modelMetadata.Key);
                ValueProviderResult valueProviderResult = bindingContext.ValueProvider.GetValue(key);
                valueProviderResults.Add(key, valueProviderResult);
            }
            SessionValueProvider sessionValueProvider = new SessionValueProvider(valueProviderResults);

            return(sessionValueProvider);
        }
Beispiel #3
0
        /// <summary>
        /// Schreibt die Werte an die Session.
        /// </summary>
        /// <param name="session"></param>
        /// <param name="values"></param>
        public static void WriteToSession(this HttpSessionStateBase session, SessionValueProvider values)
        {
            Require.NotNull(session, "session");
            Require.NotNull(values, "values");

            /*Alle Werte aus dem Value-Provider an die Session schreiben.*/
            foreach (string key in values.Keys)
            {
                ValueProviderResult valueProviderResult = values.GetValue(key);
                if (valueProviderResult != null)
                {
                    /*Neu gesetzten Wert an die Session schreiben*/
                    session[key] = valueProviderResult;
                }
                else
                {
                    /*Wenn der Wert nicht mehr gesetzt ist, dann leeren, damit keine alten Werte an der Session zurückbleiben*/
                    session[key] = null;
                }
            }
        }
Beispiel #4
0
 /// <summary>
 /// Erzeugt einen eigenen ValueProvider mit den Werten für die ModelProperties aus der Session.
 /// </summary>
 private SessionValueProvider CreateSessionValueProvider(ControllerContext controllerContext, ModelBindingContext bindingContext)
 {
     return(SessionValueProvider.FromSession(controllerContext, bindingContext));
 }