我想在部分视图中使用kendo自动完成功能,我在一个视图中有很多这样的功能 因此我必须动态获取参数,有没有什么方法可以在Data fanction中获取元素id?我$(这).val(),但它不起作用:(,我应该使用什么剂量? 请帮我 :( tihs是我的代码:
@(Html.Kendo().AutoComplete()
.Name("Employee" + (string)Session["fileid"])
.Placeholder("Employee Name ...")
.Filter(FilterType.StartsWith)
.DataSource(source =>
{
source.Read(read =>
{
read.Action(
"GetEmployeeName",
"Proceeds")
.Data(
"function onAdditionalData() {return { text:$(this).val() };}");
})
.ServerFiltering(true);
})
.Events(e => { e.Open("onOpen");})
.Animation(true)
)
答案 0 :(得分:0)
感谢您的回复,我的视图中有许多自动完成控件,我只想写一个 read.Action(“GetCountries”,“Proceeds”)。数据(“onAdditionalData”)所有这些函数的函数我必须在此函数中获取每个所选AutoComplete控件的ID(以获取用户输入的值并将其传递给指定的操作)。代码如下:
@(Html.Kendo().AutoComplete()
.Name("Employee" + (string)Session["fileid"])
.Placeholder("Employee Name ...")
.Filter(FilterType.StartsWith)
.DataSource(source =>
{
source.Read(read =>
{
read.Action(
"GetEmployeeName",
"Proceeds")
.Data("onAdditionalData");
})
.ServerFiltering(true);
})
.Animation(true)
)
function onAdditionalData() {
var id = this.element.attr('id');//This line is my problem, because it does not
//work and I can not get the ID of the currently focused AutoComplete control.
id = '#' + id;
return { text: $(id).val() };
}
这是行动部分:
[System.Web.Mvc.HttpGet]
public System.Web.Mvc.JsonResult GetEmployeeName(string text)
{
return Json(/*SOMEVALUES*/, System.Web.Mvc.JsonRequestBehavior.AllowGet);
}
如果我不使用.Data(“onAdditionalData”),它会将null作为参数发送到action
答案 1 :(得分:0)
这是一种对我有用的方法......
function onAdditionalData(e) {
return { text: e.filter.filters[0].value };
}
此外,您可以更改控制器操作名称以添加字段的ID ...
read.Action("MyAction#" + id, "MyController").Data("onAdditionalData");
并以这种方式访问attribs,允许您设置数据参数并在事件中使用它们:
function onAdditionalData(e) {
var filterValue = e.filter.filters[0].value;
var field = $(this.url.substring(this.url.indexOf('#')));
return {
text: filterValue,
extradata1: field.data("extradata1"),
extradata2: field.data("extradata2")
};
}
在GET到服务器期间,浏览器将删除URL中的哈希标记。
我使用此方法传递列表源枚举和各种其他参数,以创建一个非常灵活的AJAX接口。
答案 2 :(得分:0)
如果您只需要控件的值而不关心控件本身就可以这样做......
function onAdditionalData(e) {
return { text: e.filter.filters[0].value };
}