像Stack Overflow一样的投票系统 - C#,Asp.net,Webforms

4

有很多类似的问题,但没有涉及到WebForms和C#的。

我使用Linq-to-SQL,有一个投票表,我希望记录投票记录(投票/反对/时间/IP地址/用户等)

这样做是正确的方法吗?还是有更好的方法:

创建up/down图片,在其中隐藏要投票对象的ID(在哪里?),当您单击图像时,jQuery会将您发送到ashx页面,并返回true,如果能够创建投票记录,则根据ashx页面的响应设置图像的颜色/灰度?

额外加分为例子或链接示例=D

PS。我看到在短时间内有很多观点。 我今晚将发布我的最终代码。

2个回答

1

我想你已经有了大致的思路。你可以使用传统的WebForms AJAX,或者使用jQuery中的$.ajax()调用来完成整个过程--注册投票,返回结果,并修改图像。

这是一个基于jQuery的框架:

Javascript:

function registerVote(voteType){
   $.ajax(function (){
          //get the name of the parent DIV 
          //(using the jQuery selector), which is the ID of the thing you're voting on
          //Use Success and Error callbacks to register a success or error. 
          //On success, change the selected vote image to the highlighted version
   })

}

HTML:

<div id="ThingToVoteOn1">
<img src="voteUp" onclick="registerVote('UP')">
<img src="voteDown" onclick="registerVote('DOWN')">

</div>

问题:我的ashx应该返回什么?此外,是否有一种方法可以发送数据,以便我知道它是投票/撤消投票? - Jason
我猜我的问题是成功何时被运行?当我的处理器返回任何内容时吗?所以我可以传回除了成功/失败之外的参数。 - Jason
请忽略我之前的两个声明。我唯一无法解决的问题是如何在我的ashx遇到问题时触发$.ajax中的错误。但我正在努力解决它 ;) - Jason

1

我会按照你说的方式去做,但在数据库中,我会更多地利用关系型数据库的特性。

例如,建立一个用户表与问题表之间的一对多关系。如果你希望用户也能提问,你需要一个包含每个用户问题的表,这是另一个一对多关系。然后你还需要一个投票表,它与问题表和用户表都有一个一对多的关系,这样你就可以跟踪哪个用户投票了哪个问题。

最重要的是,如果你正确使用关系型数据库系统,它将使你更轻松地跟踪事物,从而为用户提供更好的体验。

这是其中的一点。然后让你的投票图片可点击,使用onclick事件,在JQuery中应该很简单。

使用AJAX在点击图片时进行回传,这样每次用户投票时就不必在整个页面上进行提交。这也将提高用户体验。有很多关于ASP.NET的AJAX教程。

希望这些能帮到你!


很高兴听到我走在正确的轨道上。一旦我开始实施,我肯定会有更具体的问题。谢谢!=D - Jason

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接