问题描述
我有一个附加到文本字段的自动完成功能的视图。这个想法是当用户从自动完成字段中选择一个条目时,自动完成的选择部分将运行 ajax 来更新页面上的视图模型。自动完成功能可以完美地生成供用户选择的值列表。
但是,这个选择部分不会运行我的ajax代码。我知道选择部分正在被击中,因为我在 ajax 调用前后都发出了警报。但是,它直接跳过了我的 ajax 代码,就好像它根本不存在一样!
我的观点是这样的:
UserLookup.cshtml
@model MyProject.viewmodels.UserPositionVM
<div class="form-group">
@Html.Label("Employee Name",htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.Editor("UserLookup",null,new { htmlAttributes = new { @class = "form-control" } })
</div>
</div>
<div id="userinfo">
@Html.Partial("UserDetails")
</div>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="https://code.jquery.com/ui/1.12.0/jquery-ui.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#UserLookup").autocomplete(
{
source: function (request,response) {
$.ajax({
url: "/Users/GetUserList",type: "POST",dataType: "json",data: { query: request.term },success: function (data) {
response($.map(data,function (item) {
var name = item[0] + " " + item[1] + " " + item[2];
return { label: name,data: item }
}));
}
});
},select: function (event,ui) {
$(this).val(ui.item.label);
var theid = parseInt(ui.item.data[7]);
alert(theid);
$.ajax({
url: '@Url.Action("UserInfo","Users")',data: {lookid = theid},success: function (data) {
if (data) {
$("userinfo").html(data);
}
}
});
alert("all done.");
}
});
});
</script>
相关控制器如下:
UsersController.cs
public ActionResult UserInfo(int lookid)
{
Users user = db.Users.SingleOrDefault(x => x.uid == lookid);
return PartialView(user);
}
public ActionResult UserLookup()
{
UserPositionVM userposvm = new UserPositionVM();
return View(userposvm);
}
我意识到我可能没有正确处理控制器;特别是,我如何返回模型/视图模型。但在此之前的问题是,当我放置断点时,甚至没有首先命中 UserInfo()。
我正在尝试做类似于此示例的操作:
stackoverflow.com/questions/32975369/
我做错了什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)