我有一个关于如何将增量表示为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)
}
提前谢谢!
答案 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)
您正在使用后缀增量运算符。操作的结果是操作数之前的值递增。因此,如果首次初始化NumberOfVotes
时MyVoteModel
的值为零(默认值),则_NumberOfVotes
将为零。
_NumberOfVotes = _MyVoteModel.NumberOfVotes++; // return zero
目前尚不清楚这是什么意思。你可以用
_MyVoteModel.NumberOfVotes = ++_NumberOfVotes;
增加传递给方法的参数值,然后将其分配给MyVoteModel
的新实例,但随后重定向,以便无论如何都会丢失该值