如何通过SignalR将参数传递给Kendo ui listview的读取方法
本文关键字:listview ui 读取 方法 Kendo 何通过 SignalR 参数传递 | 更新日期: 2023-09-27 17:59:06
我正在将带有SignalR的Kendo UI ListView用于我的ASP.Net MVC应用程序,如下代码示例:
CSHTML代码:
@(Html.Kendo().ListView<TestApp.Models.testViewModel>()
.Name("LVTest")
.TagName("div")
.ClientTemplateId("templateTest")
.DataSource(dataSource => dataSource
.SignalR()
.Transport(tr => tr
.Promise("hubStart")
.Hub("testHub")
.Client(c => c.Read("test_Read"))
.Server(s => s.Read("test_Read"))
)
.Schema(schema => schema
.Model(m => { m.Id(p => p.Id); })
)
)
)
HUB代码:
public IEnumerable<TestViewModel> Test_Read(string CurrencyId)
{
var queryResult = TestRepository.Test_Read(CurrencyId);
return queryResult;
}
我想将CurrencyId作为参数传递给这里的read方法。我可以通过使用Ajax绑定数据源的.Data方法来实现这一点,但需要通过起诉SignalR来实现。如何将参数传递给读取方法herre?
使用ParameterMap找到如下解决方案:
CSHTML代码
<script>
function customParameterMap(data, operation) {
var selectedEmpId = $("#ddlEmp").data("kendoDropDownList").value();
if (operation === "read") {
data.selectedEmpId = selectedEmpId;
}
return data;
}
@(Html.Kendo().ListView<TestApp.Models.testViewModel>()
.Name("LVTest")
.TagName("div")
.ClientTemplateId("templateTest")
.DataSource(dataSource => dataSource
.SignalR()
.Transport(tr => tr
.ParameterMap("customParameterMap")
.Promise("hubStart")
.Hub("testHub")
.Client(c => c.Read("test_Read"))
.Server(s => s.Read("test_Read"))
)
.Schema(schema => schema
.Model(m => { m.Id(p => p.Id); })
)
)
)
HUB代码
public class ReadRequestData
{
public string selectedEmpId { get; set; }
}
public IEnumerable<TestViewModel> Test_Read(ReadRequestData data)
{
string EmpId = data.selectedEmpId;
var queryResult = TestRepository.Test_Read(EmpId);
return queryResult;
}