Неожиданное поведение Html.EditorFor в ASP.NET MVC 2 - PullRequest
2 голосов
/ 30 марта 2010

Я получаю неожиданное поведение от Html.EditorFor ().

У меня есть этот контроллер:

[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);
    }
}

И это мое мнение, которое предназначено для обоих:

<%@ 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>

И проблема заключается в том, что когда сообщение выполняется из представления, оно выполняет правильное действие, но в текстовых полях по-прежнему отображаются исходные данные hello world, а цикл foreach выводит новые значения . Такое ощущение, что что-то в ASP.NET переопределяет значения моей модели при обновлении текстовых полей, и они просто отображают те же самые старые значения.

Я обнаружил эту проблему, пытаясь изучить EditorFor с помощью IEnumerable.

1 Ответ

2 голосов
/ 30 марта 2010

Это не проблема, это нормальное поведение. Все помощники работают именно так. Сначала они смотрят объявленные значения, а затем модель, чтобы выполнить привязку. То есть, даже если вы измените модель в действии контроллера, они будут использовать начальные объявленные значения.

Похожие вопросы:

...