【发布时间】:2012-01-19 14:02:32
【问题描述】:
我创建了一个联系表格,模型由简单的..姓名、电子邮件、电话号码等组成。
在模型上,我对某些属性有一些简单的必需属性。
这一切都很好,当没有发生验证错误时,我收到一封电子邮件,说明表单已提交,并向用户显示一条漂亮的小“谢谢”消息。
我的问题是验证失败时。我在文本框等上得到通常的红色边框。现在,如果用户更新文本框以匹配验证要求并再次提交,我会收到两封电子邮件。两者的细节完全相同。无论您多次验证我收到多少电话(电子邮件),似乎都失败了。
我对 MVC 很陌生,所以如果你能指出我正确的方向,那就太好了。
干杯,
J
表格:
using (Ajax.BeginForm("ProcessContact", "Contact", null, new AjaxOptions { UpdateTargetId = "subContentWrapper", }))
{
@Html.ValidationSummary()
<p>
<strong>Please tell us a little about you and the nature of your enquiry </strong>
</p>
<table>
<tr>
<td style="width: 200px;">
Name:
</td>
<td>@Html.TextBoxFor(x => x.Name, new { @class = "textBox" })
</td>
</tr>
<tr>
<td>
Company Name:
</td>
<td>@Html.TextBoxFor(x => x.CompanyName, new { @class = "textBox" })
</td>
</tr>
<tr>
<td>
E-mail:
</td>
<td>@Html.TextBoxFor(x => x.Email, new { @class = "textBox" })
</td>
</tr>
<tr>
<td>
Phone:
</td>
<td>@Html.TextBoxFor(x => x.Phone, new { @class = "textBox" })
</td>
</tr>
</table>
<br />
<br />
<p style="text-align: center">
<input type="submit" value="Contact Us" /></p>
}
}
代码:
if (ModelState.IsValid)
{
if (ContactService.ProcessContactSubmission(model))
{
ViewBag.Sent = true;
}
else
{
ViewBag.Sent = false;
ModelState.AddModelError("", "Sorry an error has occured, please try again later.");
}
return PartialView("~/Views/Modules/Contact Us/Main.cshtml", model);
}
else
{
ViewBag.Sent = false;
return PartialView("~/Views/Modules/Contact Us/Main.cshtml", model);
}
ContactService.ProcessContactSubmission(model) - 这只是发送电子邮件并返回 true/false
【问题讨论】:
-
我已更新帖子以包含代码片段。谢谢
-
什么是“subContentWrapper”?它是围绕 AJAX 表单的 DIV 吗?
-
这是我正在更新其内容的 div - 一切正常且符合预期。
标签: ajax asp.net-mvc razor