2010-03-30 4 views
2

Je reçois un comportement inattendu de Html.EditorFor().Comportement Html.EditorFor inattendu dans ASP.NET MVC 2

J'ai ce contrôleur:

[HandleError] 
public class HomeController : Controller 
{ 
    [AcceptVerbs(HttpVerbs.Get)] 
    public ActionResult Lister() 
    { 
     string[] values = { "Hello", "world", "!!!" }; 

     return View(values); 
    } 

    [AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Lister(string[] values) 
    { 
     string[] newValues = { "Some", "other", "values" }; 

     return View(newValues); 
    } 
} 

Et c'est mon avis qui est destiné à travailler pour ces deux:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<string[]>" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    Lister 
</asp:Content> 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 

    <h2>Lister</h2> 

    <% using (Html.BeginForm()) { %> 
     <% foreach (string value in Model) { %> 
      <%= value %><br /> 
     <% } %> 
     <%= Html.EditorForModel() %> 
     <input type="submit" value="Append Dashes" /> 
    <% } %> 

</asp:Content> 

Et le problème est que lorsque le poste est fait retour à partir de la vue, il frappe l'action correcte, mais les zones de texte affichent toujours les données du monde d'origine hello tandis que la boucle foreach génère les nouvelles valeurs. Il semble que quelque chose dans ASP.NET remplace les valeurs de mon modèle de la mise à jour des zones de texte et qu'elles affichent simplement les mêmes valeurs anciennes.

J'ai trouvé ce problème en essayant d'apprendre EditorFor avec un IEnumerable.

Répondre

2

Ce n'est pas un problème, c'est le comportement normal. Tous les aides travaillent de cette façon. Ils regardent d'abord les valeurs affichées, puis le modèle afin d'effectuer la liaison. C'est-à-dire que même si vous modifiez le modèle dans votre action de contrôleur, ils utiliseront les valeurs affichées initiales.

Questions connexes:

+0

thats bien un peu gênant pour mon but, est-ce que vous arrive d'avoir un lien vers la documentation pour cela? –

+0

Je ne suis pas sûr que ce soit un comportement documenté. Le deuxième lien que j'ai fourni est une réponse de Phil Haack qui devrait être plus que suffisant :-) –