0

mvc 4インデックスビューを使用して、シグナルrのテキストを表示しようとしました。インデックス ページにメッセージが表示されませんでした。

ハブコード

 public class TasksHub : Hub
{
    public void NewTaskDetails(int taskid,string taskname,string created,string role)
    {
        Clients.All.addMessage(taskid, taskname, created, role);
 } }

コントローラ

var context = GlobalHost.ConnectionManager.GetHubContext<TaskManager.Hubs.TasksHub>();
context.Clients.All.addMessage
(tasklist.Taskid,tasklist.Taskname,tasklist.createdby,tasklist.Role);

見る

<script src="~/Scripts/jquery-1.7.1.min.js"></script>
<script src="~/Scripts/jquery.signalR-1.0.0-alpha1.min.js"></script>
<script src="~/SignalR/Hubs"></script>
<script type="text/javascript">
$(function () {
    var THub = $.connection.TaskHub;
    $messages = $("#messages");
    myHub.client.send = function (taskid, taskname, created, role) {
        $messages.append("<br /><b>" + taskid + ":</b>" + taskname);
    }

    $.connection.hub.start();
});



</script>
<div id="messages">
</div>
4

1 に答える 1

0

最初にあなたのラインから:

 myHub.client.send = function (taskid, taskname, created, role) {
    $messages.append("<br /><b>" + taskid + ":</b>" + taskname);
}

する必要があります:

 THub.client.send = function (taskid, taskname, created, role) {
    $messages.append("<br /><b>" + taskid + ":</b>" + taskname);
}

その変数を宣言しなかった myHub は何ですか?

上記の行の 2 番目では、クライアントにメッセージを送信するためにハブが呼び出すことができる関数を定義しました。その関数を「send」と呼びましたが、ハブ側では「addMessage」を呼び出しています

3 つ目は、ハブ メソッド呼び出しを実行するクライアント アクションを定義する必要があります。ハブメソッドの呼び出しをトリガーするものは何ですか? $.connection.hub.start() に次のようなロジックを追加する必要があります。

 $('#someElement').click(function () {
    // Declare taskid, taskname, created, role.
    THub.server.NewTaskDetails(taskid, taskname, created, role);
 }
于 2013-05-13T14:52:17.807 に答える