MVC рендерит JSONResult как литерал - PullRequest
1 голос
/ 10 ноября 2010

У меня есть действие JsonResult в моем проекте MVC ...

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 Ответ

3 голосов
/ 07 августа 2011

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 при визуализации страницы, а не запрашиваете базу данных при автозаполнении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...