我正在向我的网站添加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。我对目前服务器端/客户端代码的任何评论都持开放态度。
答案 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