私は2つの簡単な方法でコントローラーを持っています:
UserControllerメソッド:
[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);
}
次に、詳細を表示するための1つの簡単なビューがあります。
<% 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("")%>
ユーザー情報の表示は問題ありません。ビューは完全にユーザーの詳細をレンダリングします。フォームを送信すると、オブジェクトユーザーが失われます。「returnView(User);」の行をデバッグしました。Post Detailsメソッドでは、ユーザーオブジェクトはnull許容値で埋められます。エディターテンプレートを使用しない場合、ユーザーオブジェクトは正しいデータで埋められます。したがって、エディターテンプレートに何か問題があるはずですが、それが何であるかを理解することはできません。提案?