如何使用SignalR将参数传递给Kendo ui listview的读取方法?

时间:2016-07-27 14:51:17

标签: c# asp.net-mvc-4 kendo-ui signalr kendo-asp.net-mvc

我使用带有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方法。我可以通过使用数据源的.Data方法来实现这一点,但需要通过起诉SignalR来实现这一点。如何将参数传递给read方法?

1 个答案:

答案 0 :(得分:0)

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