Javascript 覆盖剑道读取参数值
我有一个剑道下拉列表,它向它的读取请求发送一个额外的参数。比如说Javascript 覆盖剑道读取参数值,javascript,c#,asp.net-mvc,kendo-ui,kendo-asp.net-mvc,Javascript,C#,Asp.net Mvc,Kendo Ui,Kendo Asp.net Mvc,我有一个剑道下拉列表,它向它的读取请求发送一个额外的参数。比如说 @(Html.Kendo().DropDownList() .Name("MyDropdown") .HtmlAttributes(new { style = "width:100%" }) .Filter("contains") .Value(ID) .DataSource(source => { s
@(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而不是新值发送。对网络活动的检查表明:
请求URL:
https://localhost:8080/Dropdowns/Dropdown_Read?User=1&User=2
似乎用户属性定义了两次,发送给控制器,然后控制器拾取第一个值,这是原始默认值。是否有方法覆盖此值并将新值发送到控制器?这应该相对简单 如果更改代码:
.DataSource(source =>
{
source.Read(read =>
{
read.Action("Dropdown_Read", "Dropdowns", new { User = 1});
});
})
到
然后创建一个Javascript函数,返回要筛选的值:
i、 e
然后,这将获得所需的param结构,并从其他控件发送所选值。您需要输入一些检查代码,以确保选择了一个值,如果没有,则在允许的情况下发送一个默认值
这个链接也应该能帮到你
感谢您的帮助,我最终在我的C#控制器中使用了一个名称不同的“override”变量,如果定义了该变量,则该变量将是要使用的值(默认为null)。您的解决方案可能会更好地使用。我会试试,如果没问题的话,我会把它标记为完成。我经常使用这种技术。当您进行级联下拉时,它变得非常有用。
.DataSource(source =>
{
source.Read(read =>
{
read.Action("Dropdown_Read", "Dropdowns").Data("getFilterValue");
});
})
function getFilterValue(){
var user = $('#UserList').val();
.... other code removed for brevity
return {User: user};
}