mvc 中的自动完成文本框
AutoComplate textbox in mvc
我有一个模型与另一个模型有关系。
public class TurnRatings
{
[Key]
public int Id { get; set; }
[ForeignKey("Referred")]
public int ReferredId { get; set; }
public virtual Referred Referred { get; set; }
}
public class Referred
{
[Key]
public int Id { get; set; }
public string Name{ get; set; }
public string Family { get; set; }
}
我想为 TurnRatings 添加一个视图。我想为显示引用添加一个自动完成文本框。
可见。
<div class="form-group">
@Html.LabelFor(m => m.ReferredId, new { @class = "control-label col-lg-1" })
<div class="col-lg-3">
@Html.HiddenFor(m=>m.ReferredId)
@Html.TextBox("Referred")
@Html.ValidationMessageFor(m => m.ReferredId)
</div>
</div>
和jquery
$(document).ready(function () {
var url = '@Url.Action("ListReferred", "TurnRatings")';
$('#Referred').autocomplete({
source: function(request, response) {
$.ajax({
url: url,
data: { query: request.term },
dataType: 'json',
type: 'GET',
success: function(data) {
response($.map(data,
function(item) {
return {
family: item.Family,
id: item.Id
}
}));
}
});
},
select:
function(event, ui) {
$('#ReferredId').val(ui.item.id);
$('#Referred').val(ui.item.family);
return false;
},
minLength: 1
});
});
和控制器
public JsonResult ListReferred(string term)
{
var list = _db.Referreds.Where(m => m.Family.Contains(term));
return Json(list, JsonRequestBehavior.AllowGet);
}
但不要为控制器发送术语值。(发送空值)
我的问题是:
这是一个好的解决方案吗?
为什么不为控制器发送数据?
您的关键是 wrong.You 必须在操作参数中写入查询。
控制器
public JsonResult SearcAnything(string term)
{
return Json(data.Where(s => s.Name.Contains(term)), JsonRequestBehavior.AllowGet);
}
客户
jQuery(document).ready(function () {
jQuery('#Referred').autocomplete({
source: function (request, response) {
jQuery.ajax({
url: '@Url.Action("SearcAnything","Home")',
dataType: "json",
data: {
term: request.term
},
success: function (data) {
response(data);
}
});
},
minLength: 3
});
});
我有一个模型与另一个模型有关系。
public class TurnRatings
{
[Key]
public int Id { get; set; }
[ForeignKey("Referred")]
public int ReferredId { get; set; }
public virtual Referred Referred { get; set; }
}
public class Referred
{
[Key]
public int Id { get; set; }
public string Name{ get; set; }
public string Family { get; set; }
}
我想为 TurnRatings 添加一个视图。我想为显示引用添加一个自动完成文本框。
可见。
<div class="form-group">
@Html.LabelFor(m => m.ReferredId, new { @class = "control-label col-lg-1" })
<div class="col-lg-3">
@Html.HiddenFor(m=>m.ReferredId)
@Html.TextBox("Referred")
@Html.ValidationMessageFor(m => m.ReferredId)
</div>
</div>
和jquery
$(document).ready(function () {
var url = '@Url.Action("ListReferred", "TurnRatings")';
$('#Referred').autocomplete({
source: function(request, response) {
$.ajax({
url: url,
data: { query: request.term },
dataType: 'json',
type: 'GET',
success: function(data) {
response($.map(data,
function(item) {
return {
family: item.Family,
id: item.Id
}
}));
}
});
},
select:
function(event, ui) {
$('#ReferredId').val(ui.item.id);
$('#Referred').val(ui.item.family);
return false;
},
minLength: 1
});
});
和控制器
public JsonResult ListReferred(string term)
{
var list = _db.Referreds.Where(m => m.Family.Contains(term));
return Json(list, JsonRequestBehavior.AllowGet);
}
但不要为控制器发送术语值。(发送空值)
我的问题是: 这是一个好的解决方案吗? 为什么不为控制器发送数据?
您的关键是 wrong.You 必须在操作参数中写入查询。 控制器
public JsonResult SearcAnything(string term)
{
return Json(data.Where(s => s.Name.Contains(term)), JsonRequestBehavior.AllowGet);
}
客户
jQuery(document).ready(function () {
jQuery('#Referred').autocomplete({
source: function (request, response) {
jQuery.ajax({
url: '@Url.Action("SearcAnything","Home")',
dataType: "json",
data: {
term: request.term
},
success: function (data) {
response(data);
}
});
},
minLength: 3
});
});