0

我在 NamesModel 中有一个方法,它获取所有名称并返回名称列表:

public static List<NamesModel> GetAllNames()
{
    List<NamesModel> names = new List<NamesModel>();

    // 
    // code to fetch records
    //

    return names;
}

在我的控制器中:

public ActionResult Index()
{
   NamesModel model = new NamesModel();
   model.GetAllNames();

   return View(model);
}

在视图中,我有一个文本框:

@Html.TextBox("search-name")

现在在我的 javascript 中,我想从模型(从方法)或控制器中获取所有名称到变量中,例如:

<script type="text/javascript">

 $(function () {

     var names = ...........
     $(document).ready(function () {
          $('#search-name').autocomplete({
               source: names
          });
     });
 });
</script>

如果我使用硬编码,那么它可以工作,但我想使用存储在数据库中的名称。是否可以?

硬编码示例:

var names = ["abc", "xyz"];
4

3 回答 3

1

您可以为此使用 Ajax 和 Json

对于您的控制器:

[HttpPost]
public JsonResult GetAllNames()
{
   List<NamesModel> names = new List<NamesModel>();

   // 
   // code to fetch records
   //

   return Json(names);
}

或用于调试,以便您可以在浏览器中查看 json:

public JsonResult GetAllNames()
{
   List<NamesModel> names = new List<NamesModel>();

   // 
   // code to fetch records
   //

   var result = Json(names);
   result .JsonRequestBehavior = JsonRequestBehavior.AllowGet;
   return result ;
}

(注意这实际上是 jquery,但因为你使用 document.ready 你已经包含了 jquery)

在您的 javascript 中调用上述方法:

$.getJSON(@Url.Content("~/ControllerName/GetAllNames/"), function (result) {
         var ListWithNames = data;
});
于 2012-10-26T10:58:24.320 回答
0

“源”选项属性可以是指向返回 json 数据的 URL 的字符串(http://api.jqueryui.com/autocomplete/#option-source

于 2012-10-26T10:57:32.640 回答
0

我的问题的最佳解决方案是在这个博客中: http: //theycallmemrjames.blogspot.co.uk/2010/03/jquery-autocomplete-with-aspnet-mvc.html

感谢所有试图帮助我的人。

于 2012-10-26T13:57:03.753 回答