使用AJAX和MVC进行上/下投票所需的概念

时间:2011-02-21 22:24:14

标签: asp.net-mvc ajax voting-system

我正在开发一个类似于StackExchange的上下投票的应用。

我希望能够拥有以下

  1. 用户点击投票,投票表中的记录将填充1
  2. 用户再次点击投票并删除记录
  3. ^^同样的事情发生在投票

    1. 用户点击投票,投票表中的记录将填充1
    2. 用户点击向下投票,删除原始记录,并添加新记录-1
    3. 我的表格看起来像这样

      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 isUpDownint Vote

      If isUpDown Then
          MyRepository.Delete(EventID, UserID) 
          MyRepository.SubmitChanges()
      End If
      
      MyRepository.Insert(EventID, UserID, Vote)
      MyRepository.SubmitChanges()
      

      我不知道这个逻辑中是否存在任何漏洞,或者是否有更好的方法来实现这一点。计划是通过AJAX完成所有工作。

      此外,视图应该有两种形式(一种用于UP,一种用于DOWN),还是应该尝试使用jQuery管理更多?我只是不确定如何解决这个特殊问题。

1 个答案:

答案 0 :(得分:2)

尝试使用jQuery实现它,并使用两个参数bool upDown和int EventID实现一个Action。 您的操作可以返回带有结果的JSON(接受或拒绝,具体取决于用户之前是否已投票)以及该事件的当前投票。