我有一个带有GET和POST的标准编辑方案,该表单有一个Save按钮和一个Lookup按钮,允许用户查找一个邮政编码,填写地址并在表单字段中返回. “查找”按钮会回发到“编辑”控制器方法.
以下不是真正的代码,但演示了我的问题……
[AcceptVerbs(HttpVerbs.Post)] public ActionResult Edit(int CustomerId,string LookupButton) { Customer customer = new Customer(); UpdateModel(customer); //customer.County = "Hello World!"; return View(customer); ... }
此代码按预期执行,只返回现有的表单数据,但是当我取消注释手动更改County字段的行时,这些更改不会显示在表单上.这引起了我的兴趣,因为在形式上
<%= ViewData.Eval("County") %>
将返回“Hello world!”但
<%= Html.TextBox("County") %>
仍然保留旧的价值!
<input id="County" name="County" type="text" value="" />
客户是EF4课程.
任何帮助非常感谢.
解决方法
这是因为Html.TextBox首先查找已发布的请求值,然后查看您在控制器中更新的模型.在已发布的请求值中,它会找到旧值.