2010-11-10 23 views
1

我在我的MVC項目JsonResult動作......MVC渲染JSONResult爲字面值

public JsonResult GetData(string term) { 
    List<String> data = repo.GetData(term).ToList(); 
    return Json(data, JsonRequestBehavior.AllowGet); 
} 

這權力一個jQuery自動完成查找,但因爲只有30數據庫中的價值觀,我認爲這是不efficent使用數據庫資源......

<script type="text/javascript"> 
    jQuery(document).ready(function ($) { 
     $("input#MyTextBox").autocomplete({ 
      source: '<%: Url.Action("GetDate","Controller") %>', 
       delay: 1, 
       minChars: 2 
      } 
     ); 
    }); 
</script> 

我想生成的東西simlar這個...

<script> 
    $(document).ready(function() { 
    $("input#MyTextBox").autocomplete({ 
    source: ["my","list","of","values"] 
}); 
    }); 
</script> 

我錯過了這裏的一些東西,因爲這應該很簡單。有沒有一種方法可以將url.action更改爲將使JSON幾乎像PartialView一樣的東西?

此外,這是一個很好的解決方案,或者有人可以告訴我一個更好的方法嗎?

回答

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,而不是在自動完成時查詢數據庫。