Это - действительно странное поведение, и я установил некоторый демонстрационный кодекс, чтобы попытаться выяснить то, что продолжается.
В основном имейте два действия и единственное представление. Первое действие отправляет пустую модель в представление, действие раздела получает модель, изменяет ее содержание и передает ее обратно тому же представлению.
Странность в представлении, Модель, кажется, имеет обновленные значения в нем, но когда я делаю HTML. TextBoxFor (x => x. PropertyNameHere), это представляет текстовое поле с неизменным значением в нем.
lol... Я приношу извинения заранее за сортирный юмор, но он мешает дню становиться слишком скучным.;)
У кого-либо есть какая-либо идея, что продолжается здесь? Почему вывод TextBoxFor помещает старое значение в атрибут значения?
Вот код для тиражирования:
/Views/Demo/Index.aspx
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
Demo
<%using (Html.BeginForm("DemoSubmit", "Admin", FormMethod.Post)) { %>
Foo: <%=Html.TextBoxFor(x => x.Foo)%> <%:Model.Foo %>
Bar: <%=Html.TextBoxFor(x => x.Bar) %> <%:Model.Bar %>
PoopSmith: <%=Html.TextBoxFor(x => x.PoopSmith) %> <%:Model.PoopSmith %>
<%} %>
DemoModel.cs
namespace TestWeb {
public class DemoModel {
public string Foo { get; set; }
public int Bar { get; set; }
public string PoopSmith { get; set; }
}
}
DemoController.cs
public class AdminController : Controller {
public ActionResult Index() {
var m = new DemoModel();
return View(m);
}
public ActionResult DemoSubmit(DemoModel demo) {
demo.Foo += "!!!";
demo.Bar++;
demo.PoopSmith += " has pooped.";
return View("Index", demo);
}
}
И вот причудливый вывод:
Помощники Html по умолчанию пытаются повторно отобразить данные, которые им опубликованы. Сначала они используют значение из опубликованных данных, а если опубликованные данные недоступны, они берут данные из Модели.
Это не то, чего вы хотите, но все же наиболее распространенное использование: Вы отображаете некоторые данные в полях формы после получения запроса get. Вы отправляете сообщение в действие Update. Если у вас возникли ошибки, вы хотите заново отобразить форму с сохранением введенных вами значений.
Я видел, как некоторые люди обходят это (думаю, с помощью записи в ModelState), но мой выбор всегда заключался в том, чтобы не использовать стандартные помощники, если они мне не помогают. Это особенно верно для скрытых полей: Большинство людей путаются, когда они устанавливают значение для скрытого поля, но значение, которое реально используется, берется из сообщения. По крайней мере, на SO об этом спрашивают каждый второй день :-)
Забудьте о "большинстве людей" и замените его на "всех".
ASP.NET MVC: значение скрытого поля не отображается при использовании HtmlHelper.Hidden
http://blog.johnwest.com/post/ASPNET-MVC-Hidden-Form-Field-Bug.aspx
UPDATE О, я нашел еще одно сегодняшнее (Вы не одиноки):