asp.net - 无法处理视图中的输入

时间:2016-12-13 13:30:31

标签: c# asp.net asp.net-mvc

这里有一个相当新手的问题。我正在asp.net中创建一个民意调查系统

在我看来,我有以下选择:

@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增加。我做错了什么?

提前致谢!

1 个答案:

答案 0 :(得分:0)

对该变量的评论表明它是一个全局反击,但MVC是无国籍的,因此你必须坚持这个价值。在递增值后代码执行RedirectToAction()时,该值将丢失(palResult对象被销毁),除非在Session,cookie等机制中持久存在,将其作为查询字符串变量传递给重定向等等。

所以简单的方法可能是:

return RedirectToAction("Result", "Poll", new { count = palResult.dailyVotesCounter });

但是,这会将计数公开给用户。