MVC 表单将值发送到远程验证器

MVC form send value to remote verifier

我正在尝试针对我的数据库使用远程验证器来验证用户电子邮件是否存在,我的问题是它post正在以我不知道如何进入 [=13] 的名字发送我的电子邮件=]作为参数。

这是我的属性:

[Remote( "EmailExists", "Register", HttpMethod = "POST", ErrorMessage = "Email already exists!" )]
public string Email { get; set; }

这是我的操作:

[HttpPost]
public JsonResult EmailExists( string email )
{
    using (var db = new SOSEntities())
    {
        var user = db.VT_Usuario.FirstOrDefault( us => us.email.Equals( email ) );

        return Json( user == null );
    }
}

这就是将电子邮件 post 编辑到操作中的方式,我在 post(表单数据)的 headers 中获得了此信息:

user.Email: ariel%40teste.com

我的用户 class 与我在项目中使用的其他一些模型位于 ViewModel 内,用户数据位于 user object 内 ViewModel,数据被 post 编辑为 user.Email

我该怎么做才能解决这个问题?

您可以 AJAX 调用该方法并使用结果。

 $.ajax({

            url: 'http://MySite/myController/EmailExists',
            data: '{email:"dog@bark.com"}',
            dataType: 'json',
            contentType: "application/json;charset=utf-8",
            type: 'POST',
            success: function (result) { document.write(JSON.stringify(result)) }
})

我认为您应该使用具有视图所需属性的扁平化视图模型。只有那些属性,没有别的。在您的 Action 方法中,您读取已发布的视图模型的 属性 值,并根据需要将其映射到其他实体(根据需要在映射层或业务层中)。

因此您的视图模型将类似于

public class CreateCustomer
{
  public string Name {set;get;}
  public string Email{set;get;}    
}