asp.net - 用户通知实现

时间:2011-07-24 00:19:17

标签: jquery asp.net

我正在向我的网站添加stackoverflow-esq类型的通知栏。 在服务器端,我正在添加显示的div:

for (int i = 0; i < dt.Rows.Count; i++ )
        {
            string script = "<div class='hover-notification' style='display:none;'>";
            script += dt.Rows[i]["messageText"].ToString();
            if ((bool)dt.Rows[i]["canDismiss"] == false)
                script += "<span class='dismiss'><a title='Dismiss notification'>x</a></span>";
            script += "</div>";
            ClientScript.RegisterClientScriptBlock(this.GetType(), "clientScript" + i, script);

        }

客户端代码是:

$(document).ready(function () {
        $('.hover-notification').prependTo('body').slideDown('slow');
        $('.dismiss').click(function () { $(this).parent().slideUp('slow').remove(); });
    });

我有一个表,其中包含所有用户的所有消息,并且有一个messageID主键。在某些事件中将消息添加到表中,并且在其他事件中删除不可忽略的消息。 我想要做的是在用户点击关闭按钮后将消息标记为已解除。

我不知道该怎么做。 有人可以指出我正确的方向吗?

P.S。我对目前服务器端/客户端代码的任何评论都持开放态度。

2 个答案:

答案 0 :(得分:1)

如果我了解您的需求,您希望批准服务器端的解雇。

尝试:

$('.dismiss').click(function () {
    $(this).parent().slideUp('slow').remove();
    // ajax request to server
    $.get('dismiss.asp?id='+this.id);
});

你需要做的就是创建这个dismiss.asp,接收一个刚刚推送到:

的id
<a id='123' class='dismiss'>x</a>

我是否回答了您的问题?

答案 1 :(得分:1)

将WCF Rest-service添加到项目中并定义如下所示的操作合同:

(伪)

 [OperationContract]
 [WebGet(UriTemplate = "MyService/DismissMessage({x})")]
 public bool DismissMessage(int id) {
    var success = MyLibrary.DismissMessage(id);
    return success; 
 }

在jQuery中,只需按如下方式调用您的WCF服务:

$.getJSON('MyService/DismissMessage('+messageId+')', function(data) {
   // do something on success or fail
}

如需进一步阅读,建议您查看以下文章:http://www.codeproject.com/KB/ajax/jQueryWCFRest.aspx