自从我试图解决这个问题以来已经有好几天了。我有一个页面是网站中的邮件收件箱。您可以从 facebook 上的列表中向您的朋友发送消息。
它在一个 js 文件、2 个 ashx 文件和 aspx、aspx.cs 文件中有 AJAX 代码。
当用户想向朋友发送消息时,我正在使用 Facebook 弹出窗口。现在我更改了 UI 删除了 Facebook 并添加了一个母版页,这样现在该页面就像网站上的任何其他页面一样。但是在向messages.aspx 页面添加母版页后,点击发送消息后,HttpContext 的值变为空。当页面首次加载显示朋友列表和以前的消息时,它们工作正常。当我触发一个 js 函数来保存通过单击发送输入的消息时,它丢失了。
在 message.aspx 页面中,我使用了 3 个隐藏字段:
<script>
function SavePostedMessage() {
var SenderAccountID = $("#hdnSenderID").val();
var ReceiverAccountID = $("#hdnReceiverID").val();
var Days = $("#hdnDays").val();
var body = GetmessageData();
if (body != null || body != "")
SaveMessageInDatabase(SenderAccountID, ReceiverAccountID, body, Days);
}
</script>
<asp:HiddenField ID="hdnSenderID" runat="server" />
<asp:HiddenField ID="hdnReceiverID" runat="server" />
<asp:HiddenField ID="hdnDays" runat="server" />
<a style="cursor: pointer;" onclick="SavePostedMessage()">
<div style="height: 25px; width: 85px; float: left; margin-top: 28px; padding-top: 5px; background: #01B2E5; text-align: center;" id="uploadifyContainer">
<span style="color: White; font-size: 12px;font-weight:bold; margin-left: 5px; border: 1px solid #D4D4D4;" id="Content_lblAddPhoto">Send</span>
</div>
</a>
</div>
在messages.aspx.cs中,我在page_load中加入了注册js函数的代码:
ScriptManager.RegisterStartupScript(
this,
typeof(string),
"Play",
"javascript:GetMessageConversation('" + Request.QueryString["AccountID"] + "','" + _userSession.CurrentUser.AccountID + "','7');", true);
在 Ajax.js 我定义
function GetMessageConversation(SenderAccountID, ReceiverAccountID, Days) {
$("#hdnSenderID").val(SenderAccountID);
$("#hdnReceiverID").val(ReceiverAccountID);
$("#hdnDays").val(Days);
$("#divPostComment").show();
setSelected("trUser" + ReceiverAccountID);
$.ajax({
type: "POST",
url: "/MessageFacebox/GetMessageConversation.ashx",
data: 'SenderAccountID=' + SenderAccountID + "&ReceiverAccountID=" + ReceiverAccountID + "&Days=" + Days,
success: function (data) {
$('#messageconversationdata').html(data);
Scrollbottom();
},
error: function (errordata) {
alert('Sorry some error occurred');
}
});
}
function SaveMessageInDatabase(SenderAccountID, ReceiverAccountID, Body, days) {
$.ajax({
type: "POST",
url: "/MessageFacebox/SaveMessage.ashx",
data: 'SenderID=' + SenderAccountID + "&ReceiverID=" + ReceiverAccountID + "&Body=" + Body,
success: function (data) {
GetMessageConversation(SenderAccountID, ReceiverAccountID, days);
},
error: function () {
alert('Sorry some error occurred');
}
});
}
在 GetMessageConversation.ashx 中
context.Request.Form["SenderAccountID"]
并context.Request.Form["ReceiverAccountID"]
返回存储的值
Account senderAccount = _accountRepository
.GetAccountByAccountID(Convert.ToInt32(context.Request.Form["SenderAccountID"]));
Account receiverAccount = _accountRepository
.GetAccountByAccountID(Convert.ToInt32(context.Request.Form["ReceiverAccountID"]));
但是在 SaveMessage.ashx
Account senderAccount = _accountRepository
.GetAccountByAccountID(Convert.ToInt32(context.Request.Form["SenderID"])) ;
Account receiverAccount = _accountRepository
.GetAccountByAccountID(Convert.ToInt32(context.Request.Form["ReceiverID"] ));
context.Request.Form["SenderID"]
并context.Request.Form["ReceiverID"]
具有空值。
第一个在第一次访问页面时加载。当用户输入消息并单击messages.aspx中的发送按钮时调用保存函数
没有母版页一切正常。一旦我将母版页文件添加到messages.aspx,代码就会停止工作。
提前致谢。