我正在开发一个类似于StackExchange的上下投票的应用。
我希望能够拥有以下
^^同样的事情发生在投票
或
我的表格看起来像这样
USE [MyProject]
GO
/****** Object: Table [dbo].[EventVotes] Script Date: 02/21/2011 15:16:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[EventVotes](
[UserID] [int] NOT NULL,
[EventID] [int] NOT NULL,
[Vote] [int] NOT NULL,
[VoteDate] [datetime] NOT NULL,
CONSTRAINT [PK_EventVotes_1] PRIMARY KEY CLUSTERED
(
[UserID] ASC,
[EventID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[EventVotes] WITH CHECK ADD CONSTRAINT [FK_EventVotes_Events] FOREIGN KEY([EventID])
REFERENCES [dbo].[Events] ([ID])
GO
ALTER TABLE [dbo].[EventVotes] CHECK CONSTRAINT [FK_EventVotes_Events]
GO
ALTER TABLE [dbo].[EventVotes] WITH CHECK ADD CONSTRAINT [FK_EventVotes_Users] FOREIGN KEY([UserID])
REFERENCES [dbo].[Users] ([ID])
GO
ALTER TABLE [dbo].[EventVotes] CHECK CONSTRAINT [FK_EventVotes_Users]
GO
我需要一个如何实现这个的好概念。我打电话给VoteController
动作并发送两个参数吗? bool isUpDown
和int Vote
If isUpDown Then
MyRepository.Delete(EventID, UserID)
MyRepository.SubmitChanges()
End If
MyRepository.Insert(EventID, UserID, Vote)
MyRepository.SubmitChanges()
我不知道这个逻辑中是否存在任何漏洞,或者是否有更好的方法来实现这一点。计划是通过AJAX完成所有工作。
此外,视图应该有两种形式(一种用于UP,一种用于DOWN),还是应该尝试使用jQuery管理更多?我只是不确定如何解决这个特殊问题。
答案 0 :(得分:2)
尝试使用jQuery实现它,并使用两个参数bool upDown和int EventID实现一个Action。 您的操作可以返回带有结果的JSON(接受或拒绝,具体取决于用户之前是否已投票)以及该事件的当前投票。