我有一个控制器,有两个简单的方法:
用户控制器方法:
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Details(string id)
{
User user = UserRepo.UserByID(id);
return View(user);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Details(User user)
{
return View(user);
}
然后有一个用于显示详细信息的简单视图:
<% using (Html.BeginForm("Details", "User", FormMethod.Post))
{%>
<fieldset>
<legend>Userinfo</legend>
<%= Html.EditorFor(m => m.Name, "LabelTextBoxValidation")%>
<%= Html.EditorFor(m => m.Email, "LabelTextBoxValidation")%>
<%= Html.EditorFor(m => m.Telephone, "LabelTextBoxValidation")%>
</fieldset>
<input type="submit" id="btnChange" value="Change" />
<% } %>
如您所见,我使用了一个编辑器模板“LabelTextBoxValidation”:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<string>" %>
<%= Html.Label("") %>
<%= Html.TextBox(Model,Model)%>
<%= Html.ValidationMessage("")%>
显示用户信息没问题。该视图完美地呈现了用户详细信息。当我提交表单时,对象用户丢失了。我在“返回视图(用户)”行上进行了调试;在 Post Details 方法中,用户对象填充了可为空的值。如果我不使用编辑器模板,则用户对象将填充正确的数据。所以编辑器模板肯定有问题,但无法弄清楚它是什么。建议?