点击按钮mvc4 asp.net c#增加计数

时间:2014-11-29 19:37:08

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

我有一个关于如何将增量表示为1的问题,我真的希望我可以解决这个问题,

这是我homeController中的内容

 public ActionResult OpenBidPanelOnItem( int _NumberOfVotes)
    {
        ViewBag.Message = "Place Vote on User Confirmation";
        Session["UserMessage"] = "Vote Success";     

        try
        {
            MyVoteModel _MyVoteModel = new MyVoteModel();            
            _NumberOfVotes =   _MyVoteModel.NumberOfVotes++;

        }
        catch
        {
            Session["UserMessage"] = "Vote Error";
        }

        return RedirectToAction("DisplayStore", "Home");
    }

这就是我的观点

using (Html.BeginForm("OpenBidPanelOnItem", "Home", FormMethod.Post))
    {
        <button  type="submit"  value="Vote" style="background-color: green; width: 60px"> <b style="color:snow">Vote</b></button>

              @Html.Hidden("NumberOfVotes", Model.NumberOfVotes)

    }

提前谢谢!

2 个答案:

答案 0 :(得分:0)

我并不是100%肯定你在这里问的是什么,但我会去打一个平底船。可能是Html.Hidden仍然使用与第一次给出的值相同的值,即0,并且在POST后,您发现0仍然被传递给viewmodel?

增加该数字不会导致向用户显示新值。我在博客文章中提到了这一点:

http://mrclyfar.blogspot.co.uk/2014/08/why-are-my-form-values-being-cached.html

要解决此问题,请改用:

<input type="hidden" id="NumberOfVotes" value="@(Model.NumberOfVotes)" />

答案 1 :(得分:0)

您正在使用后缀增量运算符。操作的结果是操作数之前的值递增。因此,如果首次初始化NumberOfVotesMyVoteModel的值为零(默认值),则_NumberOfVotes将为零。

_NumberOfVotes =   _MyVoteModel.NumberOfVotes++; // return zero

目前尚不清楚这是什么意思。你可以用

_MyVoteModel.NumberOfVotes = ++_NumberOfVotes;

增加传递给方法的参数值,然后将其分配给MyVoteModel的新实例,但随后重定向,以便无论如何都会丢失该值