我正在使用MVC和SignalR編寫一個簡單的註釋部分。首先,評論視圖訂閱集線器(使用「UserParticipationId」將用於創建組名稱)。然後,一旦有人發表評論,視圖將發送評論到hub(稱爲chathub),chathub將使用groupname將消息廣播到所有視圖。使用jQuery /信號傳遞參數的問題
所以我樞紐的兩種方法是:
public void subscribetogroup(int userparticipationid)
{
Groups.Add(Context.ConnectionId, userparticipationid.ToString());
}
public void broadcastnewcomment(string comment, string commenterid, int userparticipationid)
{
Comment cmt = new Comment
{
CommenterId = commenterid,
CommentDate = DateTime.Now,
UserParticipationId = userparticipationid,
CommentText = comment
};
//_commentRepository.AddCommentToUserParticipation(cmt);
Clients.Group(userparticipationid.ToString()).displaynewcomment(comment);
}
在我看來,該腳本代碼:
<script>
$(function() {
var hub = $.connection.chathub;
hub.client.displaynewcomment = function (comment) {
alert(comment);
};
//hub.client.displaynewcomment = function (comment) {
// Html.RenderPartial("_CommentCardPartial", comment);
//};
$.connection.hub.start().done(function() {
hub.server.subscribetogroup(@Model.UserParticipationId);
$('#CommentButton').click(function() {
//var enteredcomment = $('#CommentText').val();
@*hub.server.broadcastnewcomment(enteredcomment, @Model.CommenterId, @Model.UserParticipationId);*@
hub.server.broadcastnewcomment("Hello", "hala", 2);
});
});
});
</script>
所以我的問題是雙重的:
如果我使用常量調用我的集線器,方法調用工作(使用VS調試器驗證):
hub.server.broadcastnewcomment(「Hello」,「hi」,2);
不過,如果我使用變量從我的模型,該方法不會被調用:
hub.server.broadcastnewcomment(@Model.Comment, @Model.CommenterId, @Model.UserParticipationId);
爲了使它更加混亂(我反正),下面一行始終工作:
hub.server.subscribetogroup(@Model.UserParticipationId);
- 如何混合模型變量(例如@ Model.CommenterId)和我使用jquery從textarea中讀取的值。我已經評論了我的觀點,但我不確定這是否是正確的方式。
我已經運行一些測試,出於某種原因,與broadcastnewcomment問題似乎當我嘗試發送字符串類型的變量出現。我只是嘗試將方法參數替換爲一堆int變量,並且調用工作。 –