【发布时间】:2011-02-13 19:28:31
【问题描述】:
我有一个控制器,有两个简单的方法:
用户控制器方法:
[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 方法中,用户对象填充了可为空的值。如果我不使用编辑器模板,用户对象将填充正确的数据。所以编辑器模板一定有问题,但无法弄清楚它是什么。有什么建议吗?
【问题讨论】:
-
使用 Firebug 或 Fiddler 比较两种情况下提交的表单。它会有所不同。修复它。
标签: c# asp.net-mvc asp.net-mvc-2 editortemplates