[英]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.