2012-10-26 180 views
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,我想所有的名字取为VAR iable无论是从模型(自法)或控制器,例如:

<script type="text/javascript"> 

$(function() { 

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

如果我使用硬编码,然后它工作,但我想用存储在数据库中的名称。可能吗?

硬编码例如:

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

回答

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; 
});