我的MVC项目中有一个JsonResult动作......
public JsonResult GetData(string term) {
List<String> data = repo.GetData(term).ToList();
return Json(data, JsonRequestBehavior.AllowGet);
}
这为jquery自动完成查找提供了动力,但由于数据库中只有30个值,我认为这不是对数据库资源的有效使用......
<script type="text/javascript">
jQuery(document).ready(function ($) {
$("input#MyTextBox").autocomplete({
source: '<%: Url.Action("GetDate","Controller") %>',
delay: 1,
minChars: 2
}
);
});
</script>
我想为此产生类似的东西...
<script>
$(document).ready(function() {
$("input#MyTextBox").autocomplete({
source: ["my","list","of","values"]
});
});
</script>
我在这里遗漏了一些东西,因为这应该很简单。有没有办法可以将url.action更改为将JSON渲染为PartialView的东西?
此外,这是一个很好的解决方案,还是有人能告诉我一个更好的方法?
答案 0 :(得分:3)
2分:
是的,有一种方法可以更轻松地呈现JSON:
<script type="text/javascript">
jQuery(document).ready(function ($) {
$("input#MyTextBox").autocomplete({
source: <%: Html.Raw(Json.Encode(Model.AutocompleteSourceFromDb)) %>,
delay: 1,
minChars: 2
}
);
});
</script>
从数据库使用角度来看,这不会改变事物。您仍然在页面渲染上呈现整个JSON,而不是在自动完成时查询数据库。