覆盖Kendo读取参数值
Overwrite Kendo Read Parameter Value
我有一个 Kendo 下拉列表,它向它的读取请求发送一个附加参数。例如
@(Html.Kendo().DropDownList()
.Name("MyDropdown")
.HtmlAttributes(new { style = "width:100%" })
.Filter("contains")
.Value(ID)
.DataSource(source =>
{
source.Read(read =>
{
read.Action("Dropdown_Read", "Dropdowns", new { User = 1});
});
})
)
这工作正常,正如预期的那样,值 1 被传递到控制器并执行读取。
根据用户与其他元素的交互,可以再次触发此读取,我已通过 Javascript:
完成此操作
var user = $(#UserList).val(); // 2 for example
$('#MyDropdown').data('kendoDropDownList').dataSource.read({ User: user});
这会触发读取功能,但用户值仍作为 1 而不是新值发送。对网络 activity 的检查表明:
Request URL:
https://localhost:8080/Dropdowns/Dropdown_Read?User=1&User=2
似乎用户 属性 被定义了两次,发送到控制器,然后控制器获取第一个值,即原始默认值。有没有办法覆盖这个值并将新值发送到控制器?
这应该比较容易修复。
如果您更改代码:
.DataSource(source =>
{
source.Read(read =>
{
read.Action("Dropdown_Read", "Dropdowns", new { User = 1});
});
})
到
.DataSource(source =>
{
source.Read(read =>
{
read.Action("Dropdown_Read", "Dropdowns").Data("getFilterValue");
});
})
然后创建一个 Javascript 函数,returns 您要过滤的值:
即
function getFilterValue(){
var user = $('#UserList').val();
.... other code removed for brevity
return {User: user};
}
这应该会为您提供所需的参数结构,并从您的其他控件发送选定的值。您可能希望放入一些检查代码以确保已选择一个值,如果没有,则在允许的情况下发送默认值。
这个link应该也能帮到你
我有一个 Kendo 下拉列表,它向它的读取请求发送一个附加参数。例如
@(Html.Kendo().DropDownList()
.Name("MyDropdown")
.HtmlAttributes(new { style = "width:100%" })
.Filter("contains")
.Value(ID)
.DataSource(source =>
{
source.Read(read =>
{
read.Action("Dropdown_Read", "Dropdowns", new { User = 1});
});
})
)
这工作正常,正如预期的那样,值 1 被传递到控制器并执行读取。
根据用户与其他元素的交互,可以再次触发此读取,我已通过 Javascript:
完成此操作var user = $(#UserList).val(); // 2 for example
$('#MyDropdown').data('kendoDropDownList').dataSource.read({ User: user});
这会触发读取功能,但用户值仍作为 1 而不是新值发送。对网络 activity 的检查表明:
Request URL: https://localhost:8080/Dropdowns/Dropdown_Read?User=1&User=2
似乎用户 属性 被定义了两次,发送到控制器,然后控制器获取第一个值,即原始默认值。有没有办法覆盖这个值并将新值发送到控制器?
这应该比较容易修复。
如果您更改代码:
.DataSource(source =>
{
source.Read(read =>
{
read.Action("Dropdown_Read", "Dropdowns", new { User = 1});
});
})
到
.DataSource(source =>
{
source.Read(read =>
{
read.Action("Dropdown_Read", "Dropdowns").Data("getFilterValue");
});
})
然后创建一个 Javascript 函数,returns 您要过滤的值:
即
function getFilterValue(){
var user = $('#UserList').val();
.... other code removed for brevity
return {User: user};
}
这应该会为您提供所需的参数结构,并从您的其他控件发送选定的值。您可能希望放入一些检查代码以确保已选择一个值,如果没有,则在允许的情况下发送默认值。
这个link应该也能帮到你