【发布时间】:2017-02-21 00:04:30
【问题描述】:
我熟悉 WebMethods 和 PageMethods 从客户端调用服务器端方法而不刷新页面。
我正在实现调用服务器端方法(存在于 index.aspx.cs 中)。
这是我正在尝试的:
服务器端创建的 Hub 类:
public class MyHub : Hub
{
public void RefreshData(string imessage)
{
Clients.All.displayData(imessage);
}
}
客户端:
<script>
var isconnected = false;
(function () {
$.connection.myHub.client.displayData = function (thisdata) {
$('ul').append('<li>' + thisdata + '</li>');
};
$("#btnadd").click(function () {
if (isconnected) {
$.connection.myHub.server.refreshData($("#txtval").val());
}
});
$.connection.hub.start()
.done(function () {
isconnected = true;
})
.fail(function () {
isconnected = false;
});
})();
</script>
以上一切正常,客户端正在调用服务器端的 RefreshData 方法,服务器正在将消息传递给客户端的 displayData 方法。
我的问题是:与 AJAX WebMethod () 一样。是否可以调用 index.aspx.cs 的任何方法(不在 MyHub 类中)?
如果我谈到从 index.aspx.cs 调用客户端方法,那么我们可以尝试:
var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
context.Clients.All.displayData(imessage);
但是如果我从任何 page.aspx.cs 搜索监听客户端的方法调用,我什么也得不到。..
我希望我已经解释了这个问题,如果没有......请原谅......
【问题讨论】:
标签: c# jquery asp.net asp.net-mvc signalr