Я пишу простой раздел комментариев, используя MVC и SignalR. Во-первых, Comment View подписывается на концентратор (используя «UserParticipationId», который будет использоваться для создания имени группы). Затем, как только кто-то оставит комментарий, представление отправит комментарий в концентратор (chathub), и chathub будет транслировать сообщение на все представления, используя имя группы.Проблема с параметром прохождения с использованием jquery/signalr
Так два метода моего хаба являются:
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 («Привет», «привет», 2);
Однако, если использовать переменные с моей моделью, метод никогда не вызывается:
hub.server.broadcastnewcomment(@Model.Comment, @Model.CommenterId, @Model.UserParticipationId);
Чтобы сделать его еще более запутанной (для меня во всяком случае), следующая строка всегда работает:
hub.server.subscribetogroup(@Model.UserParticipationId);
- Как объединить переменные модели (например, @ Model.CommenterId) и значение, которое я прочитал из текстового поля, используя jquery. Я прокомментировал то, что у меня есть, но я не уверен, что это правильный способ сделать это.
Я был запущены еще несколько тестов и по какой-то причине, вопрос с broadcastnewcomment, кажется, появляется, когда я пытаюсь отправить переменные типа строки. Я просто попытался заменить параметры метода на кучу переменной int, и вызов работал. –