我创建了一个联系表单,该模型只包含...名称,电子邮件,电话号码等。
在模型上,我在某些属性上有一些简单的必需属性。
这一切都很有效,当没有发生验证错误时,我收到一封电子邮件,说明表单已提交,并向用户显示一条漂亮的“谢谢”消息。
我的问题是验证失败。我在文本框上得到了通常的红色边框等。现在,如果用户更新文本框以匹配验证要求并再次提交,我收到两封电子邮件。它们中的两个完全相同的细节。然而,似乎很多次验证失败了,即我收到的电话(电子邮件)数量。
我对MVC很陌生,所以如果你能指出我的方向会很好。
干杯,
Ĵ
表格:
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
答案 0 :(得分:0)
@jamie,如果表格多次提交,你能否签入firebug?如果可能,请发布ProcessContactSubmission代码。我也希望如此 如果(ModelState.IsValid)不在循环或其他东西中,如果是,那么请告诉我们什么
答案 1 :(得分:0)
旧线程,但我想我会把我的发现放到帽子里。
今天我有同样的事情,我使用ajax表单中的提交按钮提交表单,每次提交时,帖子数量都会成倍增加!
检查了所有内容,没有重复的不显眼的js文件等,我只是将提交按钮更改为标准输入标签,手动提交表单,嘿presto,仅限单个帖子!
<input type="button" value="Next" onclick="$('#formtosubmit').submit();" />
而不是
<input type="submit" value="Next" />
希望它有助于其他人