我有一个简单的密码重置表单,它有一个用户名字段,下面是一个安全问题的下拉列表。
我想要工作的是当用户输入一个有效的用户名时,当他们从文本框中失去焦点时,我想要它,以便下拉列表将填充我的数据库中找到的用户安全问题。
这是我的 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");
}
});
});
});
仍然没有弹出警报....