0

作为标题,我使用远程验证来验证用户名字段。但是中的字段名称HtmlUser.Username. 如何传递名称为 dot 的参数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作为参数传递?

4

1 回答 1

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
});
}
于 2013-08-11T10:24:28.747 回答