我正在使用ASP.NET MVC,我试图建立一个投票系统,类似于stackoverflow。在ASP.NET MVC中类似于SO的投票系统
我希望当我点击投票按钮,在一个动作上发表帖子,在那里做一些检查,但留在我的初始页面上,并增加投票(用js),如果检查通过像SO)。
我要投票通过索引操作被填充的项目
查看
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div><input type="submit" name="Vote" value="" class="fa fa-angle-up"/>
</div>
<div>@Html.DisplayFor(modelItem => item.Votes)</div>
<div><input type="submit" name="Vote" value="" class="fa fa-angle-down" /></div>
}
行动
public ActionResult SendVote(string vote)
{
var config = new MapperConfiguration(cfg => cfg.CreateMap<VoteLogViewModel, VoteLog>());
var mapper = config.CreateMapper();
switch (vote)
{
case "":
if (ModelState.IsValid)
{
//Send to db
VoteLogViewModel voteLogViewModel = new VoteLogViewModel
{
DateAdded = DateTime.Now,
Id = Guid.NewGuid().ToString(),
PlaceId = id,
UserId = User.Identity.GetUserId(),
Vote = 1
};
db.VoteLogs.Add(mapper.Map<VoteLog>(voteLogViewModel));
db.SaveChanges();
}
else
{
return RedirectToAction("Index");
}
break;
case "":
if (ModelState.IsValid)
{
//Send to db
}
else
{
return RedirectToAction("Index");
}
break;
}
return new EmptyResult();
}
如何投票,而无需重新加载整个页面?
我应该只是在我的投票图标下做一些链接,并以某种方式处理这个路由?
如果您想保留在同一页面上,您需要使用ajax发布该值。 –
您可以编写jQuery从控制器调用ActionMethod。 –