【发布时间】:2015-06-08 06:26:34
【问题描述】:
型号:
public sealed class Model
{
public string Value { get; set; }
}
控制器:
[HandleError]
public class HomeController : Controller
{
[HttpGet]
public ActionResult Index()
{
return View(new Model { Value = "+" } );
}
[HttpPost]
public ActionResult Index(Model model)
{
model.Value += "1";
return View(model);
}
}
查看:
<%using (Html.BeginForm()){%>
<%: Model.Value %>
<%: Html.HiddenFor(model => model.Value) %>
<input type="submit" value="ok"/>
<%}%>
我每次提交表单的结果都是
<form action="/" method="post">+1
<input id="Value" name="Value" type="hidden" value="+">
<input type="submit" value="ok">
</form>
这意味着 HiddenFor 帮助器不使用 Model.Value 的实际值,而是使用传递给控制器一。它是 MVC 框架中的错误吗?有人知道解决方法吗?
更新: EditerFor 的工作方式类似。
【问题讨论】:
-
我已经发布了对该问题的解释:为什么不是设计使用模型,由开发人员明确设置,如果发生验证错误,则模型状态为使用 并且是一个非常简单有效的解决方案,可以完全解决这个问题,而无需使用奇怪的解决方法。 possible-bug-in-asp-net-mvc-with-form-values-being-replaced
标签: c# asp.net-mvc