我在我的asp.net mvc4应用程序中使用CaptchaMvc.Mvc4 1.5.0。 这是我的观点:
@using CaptchaMvc.HtmlHelpers;
@using CaptchaMvc;
@model Web.Models.Message
@using (Ajax.BeginForm("Contact", "Home", new AjaxOptions
{
HttpMethod = "post",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "Sent"
}
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
@Html.LabelFor(model => model.Name)
<div>
@Html.TextBoxFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
@Html.LabelFor(model => model.Email)
<div>
@Html.TextBoxFor(model => model.Email)
@Html.ValidationMessageFor(model => model.Email)
</div>
@Html.LabelFor(model => model.Message1)
<div>
@Html.TextBoxFor(model => model.Message1)
@Html.ValidationMessageFor(model => model.Message1)
</div>
@Html.MathCaptcha()
<input type="submit" value="Create" />
</fieldset>
<div id="Sent">
</div>
}
这是我的行动方法:
[HttpPost]
public ActionResult Contact(Message message)
{
if(this.IsCaptchaValid("error"))
if (ModelState.IsValid )
{
db.Messages.Add(message);
db.SaveChanges();
return RedirectToAction("SuccessfullySent");
}
ModelState.AddModelError("", "there is some error");
return View(message);
}
当验证码输入有效时,它可以正常工作。 问题是当验证码无效时,整个视图将在id =“已发送”的div中呈现。所以我在一个页面中呈现了两个消息视图。 如何阻止它在id =“已发送”的div中再次呈现整个视图?
答案 0 :(得分:0)
您将返回用于初始呈现页面的View
。
这意味着更新的div将被整个页面替换。
您可以按如下方式返回消息:
return Content("there is some error");
将消息输出到发送的div。
或者,如果它包含更多Html,您可以返回PartialView
并按如下方式传递消息:
return PartialView("_errorPartial", "there is some error");