在 .js 文件中编写脚本时,信号R 在 MVC 中没有响应

SignalR not responding in MVC when script in a .js file

本文关键字:响应 MVC 信号 文件 js 脚本      更新时间:2023-09-26

我有一个使用SignalR的 ASP.NET MVC应用程序。 当处理 SignalR 的客户端脚本是内联的时,它工作正常,但如果我将脚本提取到.js文件,它不会收到来自服务器的调用。

@model LiveContentSample.Models.Entry
@{
    ViewBag.Title = "Details SignalR";
    ViewBag.EntryId = Model.Id;
}
<h2>Details with PartialView SignalR Comments</h2>
<fieldset>
    <legend>Entry</legend>
    <div class="display-label">
        @Html.DisplayNameFor(model => model.Title)
    </div>
    <div class="display-field">
        @Html.DisplayFor(model => model.Title)
    </div>
    <div class="display-label">
        @Html.DisplayNameFor(model => model.Content)
    </div>
    <div class="display-field">
        @Html.DisplayFor(model => model.Content)
    </div>
</fieldset>
<p>
    @Html.ActionLink("Edit", "Edit", new { id = Model.Id }) |
    @Html.ActionLink("Back to List", "Index")
</p>
@Html.Action("_GetForEntryWithSignalR", "Comment", new { entryId = @Model.Id })
@section scripts {
    <script src="~/Scripts/jquery-1.8.2.js"></script>
    <script src="~/Scripts/jquery-ui-1.8.24.js"></script>
    <script src="~/Scripts/jquery.signalR-1.1.3.min.js"></script>
    <script src="~/signalr/hubs"></script>
@*    <script type="text/javascript" src="~/Scripts/CommentsSignalR.js"></script>*@
    <script>
        $(function () {
            var entryId = '@ViewBag.EntryId';
            var commentHub = $.connection.commentHub;
            commentHub.client.send = function (content) {
                $("#comments-list").append("<li>" + content + "</li>");
            };
            $.connection.hub.start().done(function () {
                commentHub.server.register(entryId);
                $("#add-comment").click(function () {
                    commentHub.server.addComment(entryId, $("#content").val());
                });
            });
        });
    </script>
}

但是如果我将最终脚本移动到.js文件中,它不起作用。 有什么想法吗?

@ViewBag.EntryId是一个Razor指令。如果将脚本移动到JS文件中,Razor将不再运行任何内容。如果需要将此脚本移动到单独的文件,则必须以某种方式将该条目 ID 传递到脚本中。