0

当前使用 Kendo UIAutoCompleteFor()ComboBoxFor()助手。

注意到它们生成/渲染了一堆<li>s。

如何data-* attributes为那些<li>s 添加额外的自定义?

这是当前的情况:

  1. 用户开始在 AutoCompleteFor 中输入内容
  2. 触发 ajax 调用以获取与用户键入的内容相关的一些数据。
  3. 将得到的结果转换为 IEnumerable<SelectListItem>.
  4. 然后将结果发送给 Json。Json(result, JsonRequestBehavior.AllowGet)

data-* attribute我的目标是为这些生成行中的每一个添加一个或多个附加项,<li>以便我可以在onChange()事件中获取这些数据-*。

如何实现这一目标?

此外,我知道我可以创建自己的.Template()并可能完成我的任务,但我很好奇是否有人知道另一种方法来做到这一点,然后必须创建我自己的模板。

真挚地

4

1 回答 1

0

好的,我找到了解决方案;我会在这里分享,以防有人感兴趣。

我没有将获得的结果转换为IEnumerable<SelectListItem>,而是将其转换为IEnumerable<CustomDTO>.

该类CustomDTO如下所示:

public class CustomDTO
{
     public int Value { get; set; }
     public string Text { get; set; }
     public int Age { get; set; }
     //Add whatever more properties you think you’ll need.
}

然后在我的控制器中执行以下操作:

var result = _myService.GetData().ToList();
return Json(result, JsonRequestBehavior.AllowGet);

WhereGetData()返回一个IEnumerable<CustomDTO>.

在我的视图中,我有一个AutoCompleteFor()绑定客户端 .Events(x => x.Select("onSelect")事件处理程序的控件。

处理程序定义如下:

function onSelect(e)
{
    if (e.item == null) return;
    var dataItem = this.dataItem(e.item.index());
    var valueAttribute = dataItem.Value;
    var textAttribute = dataItem.Text;
    var ageAttribute = dataItem.Age;    //This is how I get my additional value
    //...code...
}

就是这样了。

于 2014-09-04T12:34:39.053 回答