Asp.net mvc 3 如何在ASP.NET MVC应用程序中使用Razor语法使Telerik自动完成框正常工作
我试图从数据库表中的特定列获取数据,以使用ASP.NET MVC3中的Razor模板语法填充Telerik AutoComplete框。以下是我的html代码:Asp.net mvc 3 如何在ASP.NET MVC应用程序中使用Razor语法使Telerik自动完成框正常工作,asp.net-mvc-3,razor,telerik,Asp.net Mvc 3,Razor,Telerik,我试图从数据库表中的特定列获取数据,以使用ASP.NET MVC3中的Razor模板语法填充Telerik AutoComplete框。以下是我的html代码: @using Telerik.Web.Mvc.UI @model IEnumerable<COOLTool.Models.Agency> @{ ViewBag.Title = "Index"; } <h2 id="searchHeading2">Search</h2> <br/>
@using Telerik.Web.Mvc.UI
@model IEnumerable<COOLTool.Models.Agency>
@{
ViewBag.Title = "Index";
}
<h2 id="searchHeading2">Search</h2>
<br/>
@(Html.Telerik().AutoComplete()
.BindTo(IEnumerable < COOLTool.Models.Agency > ViewData["CA_AgencyName"])
.Render();
)
{
使用制度;
使用System.Collections.Generic
public partial class Agency
{
public int CA_AgencyID { get; set; }
public string CA_AgencyName { get; set; }
public string CA_AgencyAcronym { get; set; }
public string CA_AgencyAcronym_SOLID { get; set; }
public string CA_AgencyHomePageURL { get; set; }
public string CA_AgencyContact { get; set; }
public string CA_AgencyCredentialType { get; set; }
public string CA_AgencyStreetAddress1 { get; set; }
public string CA_AgencyStreetAddress2 { get; set; }
public string CA_AgencyCity { get; set; }
public string CA_AgencyState { get; set; }
public string CA_AgencyZip { get; set; }
public string CA_AgencyCountry { get; set; }
public string CA_AgencyPhonePrimary { get; set; }
public Nullable<int> CA_AgencyPhonePrimaryExtension { get; set; }
public string CA_AgencyPhoneSecondary { get; set; }
public string CA_AgencyFax { get; set; }
public System.DateTime CA_AgencyRecordAddedDate { get; set; }
public string CA_AgencyRecordAddedUserID { get; set; }
public System.DateTime CA_AgencyRecordUpdatedDate { get; set; }
public string CA_AgencyRecordUpdatedUserID { get; set; }
public int CA_AgencyStatus { get; set; }
public bool CA_Active { get; set; }
}
}
我可以给你Jquery自动完成的代码
工作代码。如果需要,请回复我这是将调用控制器的Jquery方法。它将获取搜索的前三个字符,并将其发送到控制器的参数
$(document).ready(function () {
$("#AutoComplete").keypress(function () {
var title = $("#AutoComplete").val();
var availableTags = [];
if (title.length == 3) {
$.get("/Wk/GetTitle/" + title, function (data) {
var arr = jQuery.makeArray(data.split(','));
for (var i = 0; i < arr.length; i++) {
availableTags.push(arr[i]);
}
$("#AutoComplete").autocomplete({
source: availableTags
});
// $("#AutoComplete").select();
});
}
});
});
这是控制器代码
[HttpGet]
public StringBuilder GetTitle(string inputString)
{
StringBuilder sb = new StringBuilder();
List<string> title = new List<string>();
int i = 0;
string slug = RouteData.Values.Values.ElementAt(2).ToString();
title = pageBL.GetTitleAutocomplete(slug);
for (i = 0; i <= title.Count - 1; i++)
{
if (i != title.Count -1 )
sb = sb.Append(title.ElementAt(i) + ",");
else
sb = sb.Append(title.ElementAt(i) );
}
return sb;
}
此控制器获取参数并在字符串生成器中返回所需的输出。
格式为Ex:印度、印第安纳、印度尼西亚。。。
Jquery获取op并显示在搜索框中
这里的“自动完成”是完成搜索的文本框
如果您有任何问题,请告诉我我不确定您的问题到底是什么,但从您最可能遇到的问题来看,这是由于多种原因造成的 首先,应该注意,自动完成组件需要绑定到自定义对象的IEnumerable,而不是IEnumerable,如中所述。这意味着:.BindToIEnumerable
public ActionResult Index()
{
List<Agency> myList = new List<Agency>();
myList.Add(new Agency() { CA_AgencyName = "Name 1" });
myList.Add(new Agency() { CA_AgencyName = "Name 2" });
myList.Add(new Agency() { CA_AgencyName = "Different" });
List<String> listToBind = new List<String>();
foreach (var item in myList)
{
listToBind.Add(item.CA_AgencyName);
}
ViewData["CA_AgencyName"] = listToBind;
return View();
}
当然,这只是虚拟数据,但它给出了总体思路。在我看来,我刚刚做了以下工作:
@(Html.Telerik().AutoComplete().Name("Test").BindTo((IEnumerable<String>)ViewData["CA_AgencyName"]))
请注意,由于我使用@…,所以没有显式调用.Render;因为这只应在使用@{…}时使用
所有这些都为您提供了一个在页面上工作的Telerik自动完成组件
@(Html.Telerik().AutoComplete().Name("Test").BindTo((IEnumerable<String>)ViewData["CA_AgencyName"]))