繁体   English   中英

ASP.NET MVC Signalr脚本未运行

[英]ASP.NET mvc signalr script not running

因此,我在ASP.NET mvc应用程序中实现了一个简单的signalR聊天模块。 但是我的聊天页面上的JavaScript没有执行。 我有需要通过NuGet for SignalR安装的最新jquery库,但是它仍然无法正常工作。

这是我加载JavaScript的方式:

<head>
<meta charset="utf-8" />
<title>Studiemeter Tech Support</title>
@Styles.Render("~/Content/Site.css")
@Styles.Render("~/Content/bootstrap.min.css")
@Styles.Render("~/Content/sb-admin-2.min.css")
@Styles.Render("~/Scripts/vendor/metisMenu/metisMenu.min.css")
@Styles.Render("~/Scripts/vendor/morrisjs/morris.css")
@Styles.Render("~/Scripts/vendor/font-awesome/css/font-awesome.min.css")
@Styles.Render("~/Content/login.css")
@Scripts.Render("~/Scripts/jquery-1.12.4.min.js")
@Scripts.Render("~/Scripts/jquery-ui-1.12.1.min.js")
@Scripts.Render("~/Scripts/vendor/morrisjs/morris.min.js")
@Scripts.Render("~/Scripts/vendor/bootstrap/js/bootstrap.min.js")
@Scripts.Render("~/Scripts/vendor/metisMenu/metisMenu.min.js")
@Scripts.Render("~/Scripts/vendor/raphael/raphael.min.js")
@Scripts.Render("~/Scripts/dist/js/sb-admin-2.js")
@Scripts.Render("~/Scripts/modernizr-2.6.2.js")
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">

<title>Studiemeter Ticket Systeem</title>

<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
    <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->

</head>

这是我的聊天页面:

SignaRChat.cshtml

<div class="container">
    <input type="text" id="message" />
    <input type="button" id="sendmessage" value="Send" />
    <input type="hidden" id="displayname" />
    <ul id="discussion"></ul>
</div>
@section scripts {
    <script src="~/Scripts/jquery.signalR-2.2.2.min.js"></script>
    <script src="~/signalr/Hubs"></script>
    <script>
        console.log("ok lol");
        $(function () {
            console.log("ok cuck");
            var chat = $.connection.chathub;
            chat.client.addNewMessageToPage = function (name, message) {
                $('#discussion').append('<li><strong>' + htmlEncode(name)
                + '</strong>: ' + htmlEncode(message) + '</li>');
            };
            $('#displayname').val(prompt('Enter your name:', ''));
            $('#message').focus();
            $.connection.hub.start().done(function () {
                $('#sendmessage').click(function () {
                chat.server.send($('#displayname').val(), $('#message').val());
                $('#message').val('').focus();
            });
        });
    });

    function htmlEncode(value) {
        var encodedValue = $('<div />').text(value).html();
        return encodedValue;
    }
</script>
}

我还创建了ChatHub类和Startup脚本,如下所示:

ChatHub.cs

namespace TicketSystem.Hubs
{
    public class ChatHub : Hub
    {
        public void Send(string name, string message)
        {
            // Call the addNewMessageToPage method to update clients.
            Clients.All.addNewMessageToPage(name, message);
        }
    }
}

启动文件

[assembly: OwinStartup(typeof(TicketSystem.Hubs.Startup))]
namespace TicketSystem.Hubs
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            // Any connection or hub wire up and configuration should go here
            app.MapSignalR();
        }
    }
}

当我转到聊天页面时,没有对话框,并且javascript无法正常工作。 我对此很陌生,我不知道我在做什么错。 有人可以告诉我这里出了什么问题吗?

我知道了。 此问题是由使用节布局引起的。 我刚刚发现您必须下以下命令:

RenderBody()
RenderSection("scripts", required: false)

按此顺序:

RenderSection("scripts", required: false)
RenderBody()

我的聊天功能在使用的功能方面仍然存在一些错误,但是我可以处理。 我只是ASP.NET MVC的新手。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM