加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

MVC 5远程验证

发布时间:2020-12-15 23:41:33 所属栏目:asp.Net 来源:网络整理
导读:在提交表单之前,我需要验证用户的输入字段值. 我已经在我的自定义控制器中创建了一个动作,并用它来装饰了它: 动作名称:CheckValue 控制器名称:验证 [Remote("CheckValue","Validate"),ErrorMessage="Value is not valid"]public string Value { get; set;
在提交表单之前,我需要验证用户的输入字段值.

我已经在我的自定义控制器中创建了一个动作,并用它来装饰了它:

动作名称:CheckValue
控制器名称:验证

[Remote("CheckValue","Validate"),ErrorMessage="Value is not valid"]
public string Value { get; set; }

问题是当我按提交,表单正在提交,然后如果用户输入的值无效,则显示“无效”消息.

如何验证用户输入的值,如果值无效,则阻止提交表单,并显示错误消息?

如果我尝试使用JavaScript检查表单是否有效$(“#formId”).valid()返回true,这意味着无论该值的状态是什么(有效还是无效)表单都是有效的.

另一方面,如果我使用[必需]属性来装饰另一个字段,则表单不会被提交,并且为该字段显示所需的错误.但是,远程验证字段的场景后面不会发生验证.

解决方法

远程验证在MVC中的完整解决方案.它将检查数据库中的电子邮件,然后检查数据库中是否存在,然后显示错误:

Email already exists

帐号控制器动作

[AllowAnonymous]
    [HttpPost]
    public ActionResult CheckExistingEmail(string Email)
    {
        try
        {
            return Json(!IsEmailExists(Email));
        }
        catch (Exception ex)
        {
            return Json(false);
        }
    }

    private bool IsEmailExists(string email)
        =>  UserManager.FindByEmail(email) != null;

2.添加模型验证

[Required]
    [MaxLength(50)]
    [EmailAddress(ErrorMessage = "Invalid Email Address")]
    [System.Web.Mvc.Remote("CheckExistingEmail","Account",HttpMethod = "POST",ErrorMessage = "Email already exists")]
    public string Email { get; set; }

3.添加脚本

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

它可能会帮助你.谢谢

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读