1
我有以下代碼:MVC3遠程驗證,驗證火災,方法調用,但參數爲空
<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);
}
基本上,用戶名字段調用IsUsernameAvailable方法。驗證激發並調用方法,但變量「用戶名」每次都有一個空值,因此驗證始終爲真。 任何想法?
編輯: 這是Username字段
[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();
}
}
}
達林,感謝您的回答。但不,參數「用戶名」仍然爲空,我也嘗試用ActionResult而不是JsonResult..no骰子。 – Benjamin
你的模型是怎樣的?你能提供一個簡單而簡潔的例子來重現問題嗎? –
達林,我編輯了我的回覆,其中包括用戶名字段和驗證聲明。 – Benjamin