Я не уверен, что именно ваш вопрос, но судя по тому, с чем вы, скорее всего, столкнулись, по нескольким причинам.
Прежде всего, следует отметить, что автозаполнениекомпонент должен быть привязан к IEnumerable<string>
, а не к IEnumerable
вашего пользовательского объекта, как описано в этой статье документации .Это будет означать, что это: .BindTo(IEnumerable < COOLTool.Models.Agency > ViewData["CA_AgencyName"])
должно быть изменено на следующее: .BindTo(IEnumerable < string > ViewData["CA_AgencyName"])
.
Теперь вам нужно убедиться, что вы действительно что-то сохраняете в своих ViewData под ключом «CA_AgencyName»,Если это не так, то это снова объясняет, почему вы сталкиваетесь с проблемами.В качестве примера у меня есть следующий ActionResult для представления под названием «Индекс»:
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 AutoComplete на вашей странице.