2009-11-23 7 views
0

J'ai une zone de texte rendu par un HtmlHelpervaleur de consigne pour l'action en zone de texte

<%= Html.TextBox("CategoryTitle",Model.CategoryTitle) %> 

je poste à une action. Dans l'action, je modifie manuellement la valeur de CategoryTitle et j'ai besoin d'afficher cette nouvelle valeur à l'utilisateur, mais la valeur d'origine de la publication est prise.

public ActionResult Textboxer(CategoryViewModel model) 
{ 

    model.CategoryTitle = model.CategoryTitle + "val1" ; 


    return View("Textboxer", model); 
} 

J'ai besoin de garder le comportement par défaut de la zone de texte (se rouge quand invalide) .Je ne me sens pas comme écrire mon aide pour cela.

Existe-t-il un moyen plus simple?

Répondre

1
ModelState["CategoryTitle"].Value = 
    new ValueProviderResult(NeededValue, NeededValue, CultureInfo.CurrentCulture); 

La raison derrière cela, je crois, est que Html.TextBox réutilisation « sauvé » les valeurs de ModelState chaque fois que possible.

+0

Je ne suis pas sûr si j'ai compris cela. Je pouvais effacer une zone de texte avec cette méthode, mais la définition de CategoryTitle après l'effacement n'avait aucun effet. Cependant, je pourrais définir "RawValue" de ValueProviderResult et la zone de texte avait la valeur. Pensez-vous que c'est la voie à suivre? –

+0

Oui, désolé, vous devez définir la valeur du ValueProviderResult. La raison derrière cela, autant que je comprends, est que Html.TextBox() vérifie si ModelState a "sauvé" la valeur à ré-afficher. J'ai mis à jour la réponse. – queen3

Questions connexes