Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 唯一的电子邮件模型asp.net代码优先_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 唯一的电子邮件模型asp.net代码优先

C# 唯一的电子邮件模型asp.net代码优先,c#,asp.net,asp.net-mvc,asp.net-mvc-4,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,我尝试使用远程功能,但它不起作用。 这是我的代码: 型号 [Required(ErrorMessage = "L'email est obligatoire.")] [RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", ErrorMessage = "email n'es

我尝试使用远程功能,但它不起作用。

这是我的代码:

型号

[Required(ErrorMessage = "L'email est obligatoire.")]
[RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", ErrorMessage = "email n'est pas valide.")]
[DataType(DataType.EmailAddress)]
[Remote("IsEmailAdminExist", "Admin", ErrorMessage = "Email exist!")]
public virtual  string Email { get; set; }
控制器

[HttpGet]
public JsonResult IsEmailAdminExist(string Email)
{
    return Json(!AdminContext.admins.Any(a => a.Email == Email), JsonRequestBehavior.AllowGet);

}
我没有任何回报

这是我在视图中的表单我使用Html.begin

  @using (Html.BeginForm("Create", "AdminController", FormMethod.Post, new { @id = "form2", @role = "form", @enctype = "multipart/form-data" }))
                        {
                            @Html.AntiForgeryToken()
                            @Html.ValidationSummary(true)

                                <div class="col-md-4">

                                    <div class="form-group @(ViewData.ModelState["Email"] != null &&  Html.ViewData.ModelState["Email"].Errors.Any() ? "has-error" : "")">
                                        <label class="control-label">
                                            Email <span class="symbol required"></span>
                                        </label>
                                        @Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control" } })
                                        @Html.ValidationMessageFor(model => model.Email, "", new { @class = "help-block" })
                                    </div>
                                </div>
                               <div class="row">
                                   <div class="col-md-8">
                                       </div>
                                    <div class="col-md-4">
                                         <button class="btn btn-yellow btn-block" type="submit" name="Create">
                                        Register <i class="fa fa-arrow-circle-right"></i>
                                       </button>
                                     </div>
                               </div>
                       }
@使用(Html.BeginForm(“Create”、“AdminController”、FormMethod.Post、new{@id=“form2”、@role=“form”、@enctype=“multipart/form data”}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
电子邮件
@EditorFor(model=>model.Email,new{htmlAttributes=new{@class=“form control”})
@Html.ValidationMessageFor(model=>model.Email,“,new{@class=“help block”})
登记
}

检查您的配置

我将确保您在
web.config
文件中具有正确的配置设置,以确保执行远程/客户端验证:

<appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
如果没有出现,请检查Console选项卡中是否有任何错误,这可能有助于了解为什么没有发出请求

确保外壳不是问题

您可能会考虑在检查其他值时忽略案例,因为不同的情况可能导致<代码>(或)<代码>方法失败,因为它找不到适当的值。尝试使用和使比较不区分大小写,并忽略任何额外的空白:

[HttpGet]
public JsonResult IsEmailAdminExist(string Email)
{
    // Clean up your e-mail
    var email = Email.ToLower.Trim();
    return Json(!AdminContext.admins.Any(a => a.Email.ToLower() == email), JsonRequestBehavior.AllowGet);
}
检查您的电子邮件验证逻辑

如果具有此电子邮件地址的用户已存在,是否要返回?如果是这样,那么如果确实存在一个,那么您将希望实际返回
true
,这样您就不需要求反
通话前:

// If any exists, this will return true
Json(AdminContext.admins.Any(a => a.Email.ToLower() == email), JsonRequestBehavior.AllowGet);

否则,您当前的代码是正确的(即,如果已经存在同名用户,则返回
false

是否启用了UnobtrusiveJavaScript,并包含jquery.validate.*.js文件?是的,我启用了UnobtrusiveJavaScript和ClientValidationShow您在视图中包含的脚本。您显示的代码工作正常。您是指javascript代码吗?@MalekBenelouafi,您必须在视图(或布局)中包含
jquery-{version}.js
jquery.validate.js
jquery.validate.unobtrusive.js
,以便
[Remote]
属性能够修复我的代码,现在IsEmailAdminExist返回true,但电子邮件添加时未经验证。如果您从函数中输出
true
,则它将通过验证并继续执行您的函数。因此,如果您输入一个应返回false的有效值,那么您可能应该使用
否定以获得您正在寻找的行为。问题仍然存在,我认为模型
jquery.validate.unobtrusive.js
没有使用该函数。我的项目中没有此文件
// If any exists, this will return true
Json(AdminContext.admins.Any(a => a.Email.ToLower() == email), JsonRequestBehavior.AllowGet);