如何通过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?

如何通过SignalR将参数传递给Kendo ui listview的读取方法

使用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;
}