Polecam

.NET Blogs PL
CodeGuru


Aktualizacja pola w Akcji po form submit w MVC

April 14, 2011 in categories: pro by Gutek

4

Jeżeli w MVC 3 (nie wiem jak w wcześniejszych wersjach), chcecie po operacji submit formularza zaktualizować jakąś wartość w waszym modelu to niezależnie jak byście się wysilali nie uda się wam to.

Są dwa wyjścia z sytuacji (przynajmniej mi znane):

  1. Wyczyszczenie całego stanu modelu za pomocą metody ModelState.Clear() – wymaga to jednak następnie uzupełnienia wszystkich pól modelu – odświeża to cały model;
  2. Wyczyszczenie pojedynczej wartości za pomocą metody ModelState.SetModelValue.

W przypadku drugim wystarczy wykonać operację:

ModelState.SetModelValue(KEY_PROP_NAME, new ValueProviderResult(null, string.Empty, CultureInfo.InvariantCulture));

I kłopot z głowy. A za pomocą extension methods możemy zrobić coś takiego:

public static void ResetValue<TModel>(this ModelStateDictionary @this, Expression<Func<TModel, object>> action)
{
    var expression = (MemberExpression)action.Body;
    @this.SetModelValue(expression.Member.Name, new ValueProviderResult(null, string.Empty, CultureInfo.InvariantCulture));
}

Po zwróceniu View nasza wartość zostanie odświeżona.




 

 

 

3 comments for "Aktualizacja pola w Akcji po form submit w MVC"

  1. bodziec
    bodziec Says:

    Dopiero zaczynam MVC3 ale natknąłem się na tutorial z pluralsight gdzie autor używa bezparametrowej metody TryUpdateModel<T> należącej do kontrolera i dzieki temu update'uje model po zwrotnej informacji z widoku.

    www.pluralsight-training.net/.../PSODPlayer.aspx

  2. Kamil
    Kamil Says:

    Hej, też natknąłem się na ten problem przy formularzu zwracanym przez ajax szkoda że wtedy nie znałem tego rozwiązania,
    u siebie zastąpiłem html helpera editorfor przez zwykły html z value pobieranym z modelu i o dziwo działa..

Comments are closed

© 2008-2010 Jakub Gutkowski. Powered by BlogEngine.NET 1.5.1.14. Hosted on OrcsWeb.

Design