Dans MVC 2, comment lier un Html.TextBox à une propriété modèle
-
18-09-2019 - |
Question
Mon modèle a une propriété de « sortie » et ma forme a une zone de texte nommé « sortie », à la fois orthographié exactement la même chose. Quand je remplis le formulaire et le poster, le point de vue retour a des résultats inattendus.
Plus précisément, je reçois la variable affichée de forme « de sortie » qui est alors lié à mon modèle dans la méthode du contrôleur, puis-je modifier cette variable à une valeur différente avant de passer le modèle de retour à la vue.
la propriété de sortie affiché est « une chose » ma propriété de modèle est réglé sur « une autre »
Je dans mon code: <%= Html.TextBox("output") %>
Ce qui rend ceci: <input id="output" name="output" type="text" value="one thing" />
Toutefois, lorsque le débogage, le modèle fait contient la valeur correcte ( "autre").
L'utilisation de la valeur affichée plutôt que la valeur attribuée dans le contrôleur. Toutes les idées pourquoi et comment y remédier?
La solution
En supposant que vous utilisez une vue fortement typé comme ceci:
<%@ Page ... Inherits="System.Web.Mvc.ViewPage<...TestModel>" %>
Et ayant un EditorFor remplacer votre
<%= Html.TextBox("output") %>
comme si <%= Html.EditorFor(p=>p.output) %>
vous pouvez faire dans votre contrôleur
ModelState.SetModelValue("output", new ValueProviderResult("Some string", string.Empty, new CultureInfo("en-US")));