Jquery追加& @ Html.EditorFor

时间:2014-01-15 15:54:46

标签: c# javascript jquery asp.net asp.net-mvc

我从数据库中提取一些数据,因此当您从下拉列表中选择此人的姓名时,表单中的“登录”文本字段应自动填写其详细信息。

目前它一直是空的。

我确信在尝试在@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);
        }

1 个答案:

答案 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