作为标题,我使用远程验证来验证用户名字段。但Html
中字段的名称为User.Username
。如何传递名称为点User
dot
Username
的参数。如果不使用带有匹配字段名称的参数。验证不起作用?任何人都可以提供解决方案吗?
UPDATE SOURCE CODE:
这是我的行动方法:
public JsonResult ValidateUsername(string Username)
{
var user = IUserRepo.GetUserByUrName(Username);
if (user!=null)
{
return Json("Vui lòng chọn tên khác, tên đăng nhập đã tồn tại.",JsonRequestBehavior.AllowGet);
}
return Json(true,JsonRequestBehavior.AllowGet);
}
要在实体中有效的属性:
[Required(ErrorMessage="Tên đăng nhập không được rỗng.")]
[StringLength(10,ErrorMessage="Tên đăng nhập không được vượt quá 10 ký tự.")]
[RegularExpression(@"(\S)+", ErrorMessage = "Không được có khoảng trắng.")]
[Remote("ValidateUsername", "Account")]
public string Username { get; set; }
观点:
<tr>
<td class="info_label">Tên đăng nhập</td>
<td>@Html.EditorFor(m => m.User.Username)
</td>
<td class="check_user">@Html.ValidationMessageFor(m => m.User.Username)</td>
</tr>
firebug中的视图名称为User.Username
,但参数传递给操作方法为Username
。它不匹配,因此它是字段未调用或有效的原因。如何将User.Username
作为参数传递?
答案 0 :(得分:0)
你必须使用MVC的模型绑定功能,只需要像
这样的形式 <input type='text' name='User.Username' value='' />
<input type='password' name='User.Password' value='' />
您可以将登录方法设为帐户,或者您必须使用其他任何控制器
public ActionResult Logon(User userDetails){
if(Validate(userDetails)){
// allow the access to the app
}
else {
//return the logon view with the appropriate model state error messages
}
}
如果您需要通过Ajax将数据发布到action方法,可以使用如下所示
function ValidateUserName(){
var user = {};
user.UserName=$("#userName").val();
$.ajax({
// other defaults here
data: JSON.stringify(user);
contentType:"application/json",
// other defaults here
});
}