-4

如何在注册表单中显示错误“电子邮件已存在”?

我尝试将错误添加到模型状态 - 但不显示错误。

对于检查电子邮件的操作,我有返回 JsonResult 的方法。也许这是一个问题,为什么没有显示错误?

        [AllowAnonymous]
    public JsonResult EmailValidation(string email)
    {
        if (ModelState.IsValid)
        {
            var user = _service.FindByEmail(email);
            if (user == null)
            {
                return Json(new {result = true, message = "Email is validated"}, JsonRequestBehavior.AllowGet);
            }
            ModelState.AddModelError(string.Empty, "Your Email already exists");
            return Json(new {result = false, message = "Email already exists"}, JsonRequestBehavior.AllowGet);
        }
        return Json(new {result = false, message = "Input Email"}, JsonRequestBehavior.AllowGet);
    }

<form id="emailValidationForm">
            @Html.ValidationSummary(true)
            <div class="form-group text-center">
                <p><button type="button" class="btn btn-facebook" title="Join with the Facebook"><i class="fa fa-facebook"></i>&nbsp;&nbsp;Join with the Facebook</button></p>
                <p><button type="button" class="btn btn-linkedin" title="Join with the LinkedIn"><i class="fa fa-linkedin"></i>&nbsp;&nbsp;Join with the LinkedIn</button></p>
                <p><button type="button" class="btn btn-googleplus" title="Join with the Google+"><i class="fa fa-google-plus"></i>&nbsp;&nbsp;Join with the Google+</button></p>
                <p>or</p>
                <div class="input-group margin-bottom-5">
                    <span class="input-group-addon"><i class="fa fa-user"></i></span>
                    @Html.TextBoxFor(m => m.Email, new {@class="form-control", @placeholder="Enter your Email",@data_toggle="tooltip"})
                    @*<input type="text" name="Email" placeholder="Enter your Email" class="form-control" data-toggle="tooltip">*@
                </div>
                @Html.ValidationMessageFor(m => m.Email, null, new { @class = "text-danger" })
            </div>
            <div class="text-right">
                <button type="submit" class="btn btn-primary" title="Validate email">Join</button>    
            </div>
        </form>
4

3 回答 3

0

我猜这是因为您返回的是 JSON 结果,但您显示错误消息的代码使用的是 razor。也许您可以返回视图。

于 2014-08-05T21:39:08.797 回答
0

我使用这个答案解决了我的问题https://stackoverflow.com/a/2759898/2167382 我只是将我的视图返回为 Json 并且它工作正常。

public string RenderRazorViewToString(string viewName, object model)
{
  ViewData.Model = model;
  using (var sw = new StringWriter())
  {
    var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext,
                                                             viewName);
    var viewContext = new ViewContext(ControllerContext, viewResult.View,
                                 ViewData, TempData, sw);
    viewResult.View.Render(viewContext, sw);
    viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
    return sw.GetStringBuilder().ToString();
  }
}
于 2014-08-06T14:57:49.427 回答
0

如果我们谈论 MVC 5,最好的解决方案在这里:如何检查用户是否已经存在于 ASP.NET MVC 5 的客户端?

简单、清晰、智能!

于 2015-05-29T08:19:16.057 回答