Я играл с ASP.NET MVC и столкнулся с чем-то, что я не могу понять.
Предположим, у меня есть такой объект:
public class TestObject
{
public string Name { get; set; }
public int Age { get; set; }
}
И просмотр страницы (Create.aspx), такой как:
<form action="/Create" method="post">
<p>
<%=Html.TextBox("Name") %>
</p>
<p>
<%=Html.TextBox("Age")%>
</p>
</form>
И на моем контроллере у меня есть следующие действия:
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Create()
{
return View(new TestObject { Name = "DefaultName", Age = 10 } );
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(TestObject o)
{
o.Name = "ChangedNameToSomethingElse";
o.Age = 15;
return View(o);
}
Метод Html.TextBox()
всегда генерирует текстовые поля со значениями по умолчанию, даже после обратной передачи, когда объект передается обратно с различными свойствами в его значениях. Конечно, я не могу придумать реальный пример того, почему я хотел бы сделать такую вещь, но я все еще не понимаю, почему у меня всегда заканчиваются текстовые поля, заполненные значениями модели, которые были установлены в действии Create с атрибутом AcceptVerbs(HttpVerbs.Get)
.
Примечание : я пробовал Html.TextBox("Name", Model.Name)
, но результат все тот же. И я проверил, что действие Create с AcceptVerbs(HttpVerbs.Post)
действительно выполняется, передав значение через ViewData в View.
Кроме того, обновленное значение отображается при выводе значения с помощью <%=Model.Name %>
, но опять же не в текстовом поле.
Есть ли что-то очевидное, что я упускаю, или есть причины этого поведения?