我使用带有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方法?
答案 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;
}