1

私は次のコードを持っています:

    <td colspan="5" align="left" valign="top">
        <div style="position:absolute;" >@Html.TextBoxFor(a => a.Item1.Username, new { @class = "textboxLarge" })
         @Html.ValidationMessageFor(a => a.Item1.Username)</div>
    </td>

と:

    public JsonResult IsUserNameAvailable(string Username)
    {
        var users = _userService.GetAll();
        var userNames = (from u in users
                        select u.Username).ToList();
        if (userNames.Contains(Username))
        {
            var referrer = Request.UrlReferrer.AbsolutePath;
            List<string> pagesToValidate = new List<string>() { "Registro" };
            var jsonRequestBehavior = JsonRequestBehavior.DenyGet;
            foreach (string page in pagesToValidate)
            {
                if (referrer.Contains(page))
                    jsonRequestBehavior = JsonRequestBehavior.AllowGet;
            }
            return Json("El nombre de usuario ya existe.", jsonRequestBehavior);
        }
        return Json(true, JsonRequestBehavior.AllowGet);
    }

基本的に、UsernameフィールドはIsUsernameAvailableメソッドを呼び出します。検証が実行され、メソッドが呼び出されますが、変数「Username」は毎回null値を持つため、検証は常にtrueになります。何か案は?

編集:これはユーザー名フィールドです

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Username", DbType="NVarChar(50) NOT NULL", CanBeNull=false)]
    [Required(ErrorMessage="El nombre de usuario es requerido.")]
    [Remote("IsUserNameAvailable", "Validation")]
    public string Username
    {
        get
        {
            return this._Username;
        }
        set
        {
            if ((this._Username != value))
            {
                this.OnUsernameChanging(value);
                this.SendPropertyChanging();
                this._Username = value;
                this.SendPropertyChanged("Username");
                this.OnUsernameChanged();
            }
        }
    }
4

1 に答える 1

1

プレフィックスを指定してみましたか:

public ActionResult IsUserNameAvailable([Bind(Prefix="Item1")] string username)
{
    ...
}
于 2012-04-30T21:51:15.347 に答える