在我看来,我有以下选择:
@using (Html.BeginForm("Vote","Poll"))
{
@Html.LabelFor(m => m.option_Pal);
@Html.RadioButtonFor(m=>m.option_Pal, true)
<button type="submit" class="btn btn-primary">Vote!</button>
}
然后我在PollController中接收了这个方法中的数据:
[HttpPost]
public ActionResult Vote(Poll poll)
{
if (Request.Form["m.option_Pal"] != null)
{
palResult.dailyVotesCounter++; //global counter where I store every vote
}
return RedirectToAction("Result", "Poll");
}
palResult在我的PollController开头初始化:
public class PollController : Controller
{DailyResult palResult = new DailyResult();
[...]
最后:
public ActionResult Result()
{
ViewBag.Message = "Pals : " + palResult.dailyVotesCounter;
return View();
}
我尝试了几种方法,但是当在视图中标记选项时,我无法使palResult.dailyVotesCounter
增加。我做错了什么?
提前致谢!
答案 0 :(得分:0)
对该变量的评论表明它是一个全局反击,但MVC是无国籍的,因此你必须坚持这个价值。在递增值后代码执行RedirectToAction()
时,该值将丢失(palResult对象被销毁),除非在Session,cookie等机制中持久存在,将其作为查询字符串变量传递给重定向等等。
所以简单的方法可能是:
return RedirectToAction("Result", "Poll", new { count = palResult.dailyVotesCounter });
但是,这会将计数公开给用户。