フォーム モデル クラスによってバインドされたテキスト ボックス データを含む MVC Ajax フォームがあります。このクラスには、次のフィールドがあります。
[Required(ErrorMessage = "First name must be filled")]
public string FirstName { get; set; }
[Required(AllowEmptyStrings = false,ErrorMessage = "Last Name must be filled")]
public string LastName { get; set; }
[DataType(DataType.EmailAddress)]
[Required(AllowEmptyStrings = false, ErrorMessage = "Email must be filled")]
public string Email { get; set; }
3 つのフィールドはすべてバインドされて@Html.EditorFor(p=>p.FirstName/LastName/Email)
いるため、これは非常に単純なはずです。
すべてが正常に機能しますが、フォームが投稿されると、電子メール フィールドは常に null になります。私はそれを (...) に置き換えようとしましたが、それ<input type="email"
も null です。
type="email"
したがって、フォーム メンバーに がある場合、値は null であるという結論になります。
誰かが理由を知っていますか、そしてもっと重要なのは、それを解決する方法ですか? (ちなみにこれはasp.mvc4です)
編集:これが私の見解です:
<div id="result"></div>
@using (Ajax.BeginForm("FormTest", new AjaxOptions() {HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId = "result"}))
{
{
Html.EnableClientValidation(true);
}
@Html.ValidationSummary(false)
@Html.LabelFor(p => p.EventForm.FirstName)
@Html.EditorFor(p => p.EventForm.FirstName)
@Html.LabelFor(p => p.EventForm.LastName)
@Html.EditorFor(p => p.EventForm.LastName)
@Html.LabelFor(p => p.EventForm.PhoneNumber)
@Html.EditorFor(p => p.EventForm.PhoneNumber)
@Html.LabelFor(p => p.EventForm.Email)
@Html.EditorFor(p => p.EventForm.Email)
@Html.LabelFor(p => p.EventForm.CompanyName)
@Html.EditorFor(p => p.EventForm.CompanyName)
@Html.LabelFor(p => p.EventForm.Adress)
@Html.EditorFor(p => p.EventForm.Adress)
@Html.LabelFor(p => p.EventForm.Zip)
@Html.EditorFor(p => p.EventForm.Zip)
@Html.LabelFor(p => p.EventForm.PostalCity)
@Html.EditorFor(p => p.EventForm.PostalCity)
@Html.LabelFor(p => p.EventForm.Country)
@Html.EditorFor(p => p.EventForm.Country)
@Html.LabelFor(p => p.EventForm.Comment)
@Html.EditorFor(p => p.EventForm.Comment)
}
そして私のコントローラアクション:
[HttpPost]
public PartialViewResult Index(EventViewModel form)
{
StoreEventRegistration(form.EventForm);
return PartialView("PagePartial/FormSubmit", form.EventForm);
}
おそらくご存じのとおり、モデル全体を追加したわけではありませんが、残りのフィールドは上記と同じ方法で作成されます。