ユーザー名フィールドがあり、その下にセキュリティの質問のドロップダウン リストがあるシンプルなパスワード リセット フォームがあります。
私が作業しようとしているのは、ユーザーが有効なユーザー名を入力したとき、テキストボックスからフォーカスを外したときに、データベースにあるユーザーのセキュリティの質問がドロップダウン リストに入力されるようにしたいということです。
ここに私のHTMLがあります
<div class="editor-field">
@Html.TextBoxFor(model => model.userName, new { @Id = "forgotPassUserName" })
@Html.ValidationMessageFor(model => model.userName)
</div>
<div class="editor-field">
@{
List<SelectListItem> securityquestionvalues = new List<SelectListItem>();
}
@Html.DropDownListFor(model => model.securityQuestion, securityquestionvalues, new { @Id = "forgotPassSecurityQuestions" })
これが私のjQuery/JSです
<script type="text/javascript">
$(function () {
$("#forgotPassUserName").change(function () {
var selectedValue = $(this).val();
$.getJson("LoginRegisterController/ForgotPasswordDropDownList", { user: selectedValue }, function (result) {
var selectList = $("#forgotPassSecurityQuestions");
selectList.add(result, null);
});
});
});
上記の getJSON によって呼び出されるコントローラのメソッドは次のとおりです。
public ActionResult ForgotPasswordDropDownList(string userName)
{
var db = IoC.ResolveObjectContextelearningCommon();
var rep = db.GetRepository<EmployeeReg>();
List<EmployeeReg> user = rep.Find(o => o.Login == userName).ToList();
List<SelectListItem> questionList = new List<SelectListItem>();
if (user[0].secureQuestion1 != null)
{
questionList.Add(new SelectListItem { Text = user[0].secureQuestion1, Value = user[0].secureQuestion1 });
}
if (user[0].secureQuestion2 != null)
{
questionList.Add(new SelectListItem { Text = user[0].secureQuestion2, Value = user[0].secureQuestion2 });
}
return Json(questionList, JsonRequestBehavior.AllowGet);
}
不運にも。これは私にとってはうまくいきません。残念ながら、getJSON メソッドでブレークポイントを設定しようとするとエラーが発生します。問題はそこにあるようです。
編集
getJSON メソッドを .ajax に変更しました
<script type="text/javascript">
$(function () {
$("#forgotPassUserName").change(function () {
var selectedValue = $(this).val();
var url = '<%= Url.Action("ForgotPasswordDropDownList", "LoginRegisterController") %>';
$.ajax({
type: "GET",
url: url,
data: { userName: selectedValue },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
alert("testing");
}
});
});
});
まだ警告ポップアップが表示されません....