1

我有一个模式弹出窗口作为用户消息收件箱。当用户单击链接查看消息时,我使用 jquery 来显示消息。消息显示周围的导航都是客户端的,并且非常流畅。

我一直试图解决的问题是在用户单击消息链接以查看我要更新数据库以反映这一点的消息之后。我有一个服务器端 c# 方法可以做到这一点,我正在尝试使用 ajax 来实现它。任何其他方式和页面重新加载和消息模式消失。

我的尝试是在更新面板上放置一个按钮。这有效并且不会导致完整的回发并且模态保持不变。所以我的下一步是在运行显示消息的函数时从 jquery 调用按钮。现在它做了一个整页的帖子,而不是部分的。

<asp:UpdatePanel ID="UpdatePanel2" runat="server">
<ContentTemplate>
<asp:Button runat="server" ID="UpdateReadStatusButton" Text="test" OnClick="UpdateReadStatus"/>   
</ContentTemplate>
</asp:UpdatePanel>

然后我用 jquery 调用它

function ShowMyPopup(message, subject, sender, reciever, id) {
  ShowPopup(message, subject, sender, reciever, id);
  $('#ctl00_UpdateReadStatusButton').click();
}

我尝试使用另一种 ajax 方式,并且能够轻松地调用服务器端代码安静,并且它运行良好,直到我部署。我尝试了来自 Micheal schwarz 的 .net ajax 包装器,但在部署后也没有成功。

问题是该站点托管在 godaddy 共享托管计划上,而我尝试过的任何其他 ajax 方法都无法在他们的服务器上运行。我现在正在使用最新版本的 AjaxControlToolKit,这是一个 Web 表单应用程序,因此来自 MVC 的简单解决方案将不起作用。一般来说,我对 ajax 和 Web 开发非常陌生,任何帮助都将不胜感激。

我还在考虑使用 jquery 设置按钮 commandArgument 属性,因为那是我有消息 Id 的地方,我可以在回发服务器端获取它。

如果您想要视觉效果,请访问 On2Wheels.ca 并使用用户 HelpUser 和密码 HelpUser(注意大写字母)登录,然后单击右侧的邮件图标。

我刚刚尝试了 ajax 的 Jquery 方式:

function UpdateRead() {
    $.ajax({
        type: "POST",
        url: "Default.aspx/UpdateReadStatus",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            //do something
        }
    });
}

使用 ac# 方法:

    [System.Web.Services.WebMethod]
    protected void UpdateReadStatus(string id)
    {
        var a = id;
    }

我认为如果我使用 MVC,我只能通过 url 调用方法。这也是在母版页中,因此它显示在每个页面上。

4

1 回答 1

0

如果您使用 jQuery,则无需使用 ASP.Net UpdatePanel。这很挑剔,很麻烦,而且到处都是比它值得的麻烦。为您的 AJAX 功能使用严格的 jQuery 方法。看看他们网站上的一些例子:

http://api.jquery.com/jQuery.ajax/

于 2012-04-23T20:26:13.280 回答