5

我有一个输入

@Html.TextBoxFor(m => m.Buyer.Email, new { @maxlength = "100" })

我想用远程属性验证它

[Remote("IsUserNameAvailable", "Validation")]        
public string Email { get; set; }

在验证控制器中,我有一个动作:

[HttpPost]
public JsonResult IsUserNameAvailable(string Email)

但是,当然我在电子邮件参数中得到一个空值。我应该将什么参数名称传递给 IsUserNameAvailable 方法?

更新:刚刚查看了发送到远程验证操作的请求: http://myhost/Validation/IsUserNameAvailable?Buyer.Email=test@test.test 参数名称是 Buyer.Email,我应该如何将它传递给函数?

4

3 回答 3

0

代替 HttpPost 使用 HttpGet。你没有发布任何东西。您正在检索结果。其次,确保当您从 IsUserNameAvailable 返回结果时指定您允许 JSON 获取。

[HttpGet]
public JsonResult IsUserNameAvailable(string Email)
{
    // Do something
    if (your_email_check_returns_true)
    {
        return Json(true, JsonRequestBehavior.AllowGet);
    }

    return Json(false, JsonRequestBehavior.AllowGet);
}
于 2012-05-04T19:15:42.760 回答
0

由于您不能将字符串属性命名为“Buyer.email”,这应该可以工作......如果您希望控制器中有“买家”视图模型并让 ModelBinder 填充买家电子邮件属性怎么办?

于 2012-05-05T14:19:12.187 回答
0

尝试更改您的操作签名以包含绑定前缀:

public JsonResult IsUserNameAvailable([Bind (Prefix="Buyer.") ] string Email)
于 2014-09-04T19:54:53.143 回答