2010-05-05 96 views
1

在ASP.NET MVC中,我们没有可以执行诸如自动完成之类的东西的控件(我们在Visual Studio中完全没有控件,就像在Web表单中一样)。如何在ASP.NET MVC中实现自动完成?

但是,是否仍然可以通过ASP.NET MVC中的文本框(如使用Google主页上的文本框)获得“自动完成”?

如果是这样,那么最好的方法是什么? JQueryUI?或者有另外一种获得这种功能的方法?

感谢您的帮助。

回答

4

你的意思是像jquery ui中的那个?

http://jqueryui.com/demos/autocomplete/

+0

@ Chobo2 - 我刚刚检查链接,这就是我想要的。不过,我想知道这是否是获得该功能的唯一方式(即使用JQueryUI)。如果这是唯一的方法,那我就很好。 – Richard77 2010-05-05 18:13:31

+0

在JqueryUI之前。还有其他的其他自动完成插件。但就其他方面而言。我不这么认为。你可以推出自己的,但仍然会是JavaScript/jQuery。我不认为有可能使用asp.net MVC(甚至不使用webforms)来完成自动完成,因为您每次都必须回发帖子来发送他们正在输入的字母。您需要某种排序的Ajax,使其工作。 – chobo2 2010-05-05 18:40:51

2

要使用JQuery Autocomplete在ASP.NET MVC中,你可以做到以下几点:

第1步:创建文本框

<%= Html.TextBox("searchBox",null,new { @class="large", autocomplete="on"}) %> 

步骤2:创建动作做搜索功能(我使用NHibernate查询数据库,但关键是要返回一个字符串,每个结果由换行符分隔)

public ActionResult Autocomplete(string q) { 

    var programs = programRepository 
        .Search(q) 
        .ToList() 
        .ConvertAll(x => x.ProgramName) 
        .ToArray(); 

    return new ContentResult {Content = string.Join("\n", programs) }; 
} 

第3步:打开你的HTML自动填充功能(地方一个脚本块内)

$(document).ready(function() { 

    $('#searchBox').autocomplete("/Controller/Autocomplete", { autoFill: true, minChars: 2 }); 

});