Концепция, необходимая для голосования вверх / вниз с использованием AJAX и MVC - PullRequest
2 голосов
/ 22 февраля 2011

Я работаю над приложением, в котором голосование "за" и "против" аналогично StackExchange.

Я хочу, чтобы следующие пользователи

  1. нажимали вверх, изапись в таблице голосования заполняется 1
  2. пользователь снова нажимает на голосование, и запись удаляется

^^ то же самое происходит с отрицательными голосами

или

  1. пользователь нажимает на голосование, и запись в таблице голосования заполняется 1
  2. пользователь нажимает на голосование вниз, и исходная запись удаляется, и добавляется новая записьс -1

Моя таблица выглядит следующим образом

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?Я просто не уверен, как подойти к этой конкретной проблеме.

1 Ответ

2 голосов
/ 07 марта 2011

Попробуйте реализовать его с помощью jQuery и одного Action, как с двумя аргументами bool upDown и int EventID.Ваше действие может вернуть JSON с результатом (принять или отклонить в зависимости от того, голосовал ли пользователь ранее) и текущими голосами за это событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...