ASP.NET MVC 2中出现意外的Html.EditorFor行为

时间:2010-03-30 17:06:01

标签: c# asp.net-mvc-2 editorfor

我从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中的某些内容覆盖了更新文本框的模型值,它们只是显示相同的旧值。

我在尝试使用IEnumerable学习EditorFor时发现了这个问题。

1 个答案:

答案 0 :(得分:2)

这不是问题,这是正常的行为。所有帮助者都这样工作。他们首先查看已发布的值,然后查看模型以执行绑定。也就是说,即使您在控制器操作中修改模型,它们也将使用初始发布的值。

相关问题: