MVC3 リモート検証を初めて試みています。私はそれを古典的な「そのユーザー名が取られている」シナリオに使用していますが、失敗しています。Chrome 開発者で ajax 情報を確認しましたが、値を送信しているように見えますが、検証コントローラーでは文字列が null です。
ajax ヘッダーから (Google 開発者で):
UserData.login:jon
検証コントローラー:
public class ValidationController : Controller
{
//
// GET: /Validation/
public JsonResult IsUsernameAvailable(string login)
{
var repo = new Repository();
bool IsNameInUse = repo.CheckUserName(login);
if (IsNameInUse == true)
{
return Json("The Username has been taken, please try another", JsonRequestBehavior.AllowGet);
}
return Json(true, JsonRequestBehavior.AllowGet);
}
}
「CheckUserName」メソッド:
public bool CheckUserName(string Username)
{
var existingUser = (from u in db.useraccount
where u.login.Equals(Username)
select u).SingleOrDefault();
if (existingUser == null)
{
return false;
}
else
{
return true;
}
}
ユーザーモデルには Remote 属性があります。
[Remote("IsUserNameAvailable", "Validation")]
[Display(Name = "Choose a Login Name")]
[StringLength(40)]
[Required]
public string login { get; set; }
検証コントローラーでの手動バインディングについていくつか読んだことがありますが、これを構築するために使用する例ではそれについて何も言及されていないため、手動バインディングは私が間違ったことに対するパッチにすぎないと想定しています。他に必要なデータがあれば教えてください。