我从数据库中提取一些数据,因此当您从下拉列表中选择此人的姓名时,表单中的“登录”文本字段应自动填写其详细信息。
目前它一直是空的。
我确信在尝试在@HtmlEditorFor上附加javascript数据时会出现问题。
如果我做错了,你能看一下吗?
感谢您提前抽出时间。
查看:
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>User</legend><div class="editor-label">
@Html.LabelFor(model => model.UserLogin)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.UserLogin, new {id ="LoginId" })
@Html.ValidationMessageFor(model => model.UserLogin)
</div>
}
<script type="text/javascript">
$('#UserID').on('change', function () {
$.ajax({
type: 'POST',
url: '@Url.Action("GetUserForm")',
data: { ID: $('#UserID').val() },
success: function (results) {
var options = $('#LoginId');
options.empty();
$.each(results, function () {
options.append($().val(this.ID).text(this.Value));
});
}
});
});
</script>
控制器:
[HttpPost]
public JsonResult GetUserForm(string ID)
{
//pseudo code
var data = from s in StaffDB.StaffData
where s.Forename1 + ' ' + s.Surname == ID
select new { Value = s.Login, ID = s.ID};
return Json(data);
}
答案 0 :(得分:2)
使用
@Html.TextBoxFor(model => model.UserLogin, new {id ="LoginId" })
as
@Html.EditorFor(model => model.SomeProperty,ViewData)
和
@Html.TextBoxFor(model => model.SomeProperty,htmlAttributes Object)
或者在jQuery选择器传递
$('#UserLogin')
用于编辑器选择,因为它自动生成模型属性名称的ID