MVC将JSONResult渲染为文字

时间:2010-11-10 10:31:58

标签: asp.net-mvc json autocomplete

我的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的东西?

此外,这是一个很好的解决方案,还是有人能告诉我一个更好的方法?

1 个答案:

答案 0 :(得分:3)

2分:

  1. 是的,有一种方法可以更轻松地呈现JSON:

    <script type="text/javascript">
    jQuery(document).ready(function ($) {
        $("input#MyTextBox").autocomplete({
            source: <%: Html.Raw(Json.Encode(Model.AutocompleteSourceFromDb)) %>,
                delay: 1,
                minChars: 2
            }
        );
    });
    </script>
    
  2. 从数据库使用角度来看,这不会改变事物。您仍然在页面渲染上呈现整个JSON,而不是在自动完成时查询数据库。