Pac*_*man 5 asp.net-mvc asp.net-mvc-3 remote-validation
public class UserModel
{
public LogOnModel LogOnModel { get; private set; }
public RegisterModel RegisterModel { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
在我的RegisterModel中,我有这样的电子邮件地址:
[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})(\]?)$")]
[Required]
[Display(Name = "E-mail")]
[Remote("IsEmailAddressAvailable", "Validation", HttpMethod = "POST")]
public string EmailAddress { get; set; }
Run Code Online (Sandbox Code Playgroud)
我的validationController:
public class ValidationController : Controller
{
public JsonResult IsEmailAddressAvailable([string emailAddress)
{
return Json(false, JsonRequestBehavior.AllowGet);
}
}
Run Code Online (Sandbox Code Playgroud)
视图@Model是UserProfile,ValidationController中的emailAddress为null.
我试图将ValidationController更改为这样,没有运气:
public class ValidationController : Controller
{
public JsonResult IsEmailAddressAvailable([Bind(Include = "EmailAddress")]RegisterModel register)
{
return Json(false, JsonRequestBehavior.AllowGet);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 9
您对使用Bind属性的想法是正确的.而是使用Include参数,您应该使用Prefix参数.所以你的控制器应该看:
public class ValidationController : Controller
{
public JsonResult IsEmailAddressAvailable([Bind(Prefix = "RegisterModel.EmailAddress")]string EmailAddress)
{
return Json(false, JsonRequestBehavior.AllowGet);
}
}
Run Code Online (Sandbox Code Playgroud)
因此Prefix参数将浏览器发送的参数与action参数绑定.
我想到的原因是,当您将另一个模型(RegisterModel)作为另一个模型的属性(UserModel)时,当您使用助手Html来渲染模型属性时,例如
@Html.TextBoxFor(x=>x.RegisterModel.EmailAddress)
Run Code Online (Sandbox Code Playgroud)
它会呈现出类似的效果
<input type="text" name="RegisterModel.EmailAddress"/>
Run Code Online (Sandbox Code Playgroud)
MVC模型绑定string emailAddress适用于名称属性,您在第一个示例中接收,RegisterModel model在第二次尝试中,尝试使用UserModel model作为远程验证 ActionResult 的接收参数,例如
public JsonResult IsEmailAddressAvailable(UserModel model)
{
return Json(false, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5638 次 |
| 最近记录: |