我是MVC 4的新手, 我想要做的是,制作一个显示增量整数的标签
在cshtml页面
@Html.LabelFor(m => m.Increment, Model.Increment)
控制器页面中的
public ActionResult Index(IncrementModel IM){
IM.Increment ++;
return View(IM);
}
起始结果为0,按此键增加为1,无论我按下多少时间,值永远为1。
答案 0 :(得分:1)
LabelFor
辅助方法呈现这样的标签。
<label for="Increment">Increment</label>
这个不胜的事件显示了你的增量属性的价值。如果你想要,你可以简单地渲染它像
<p>@Model.Increment</p>
或使用DisplayFor()
辅助方法。
@Html.DisplayFor(s=>s.Increment)
这也只是为您的页面呈现值。当您发布表单时,它不会将页面中的当前值发布到HttpPost操作。为此,您需要一个表单域。它可以是文本框,隐藏字段等。
@using(Html.BeginForm())
{
@Html.DisplayFor(s=>s.Increment)
@Html.HiddenFor(s => s.Increment)
<input type="submit"/>
}
但是现在当你发布值并在action方法中将其递增并将其发回时,输入字段(隐藏字段)值不会每次都使用新值更新。因为ModelStateDictionary
现在具有此属性的某个值,这是第一次更新后的值。当我们为Increment
属性呈现隐藏字段时,将使用此值。这就是您将1
视为值并且永远不会更改的原因。
您应该做的是从ModelStateDictionary中明确删除此项目。
[HttpPost]
public ActionResult Index(IncrementModel IM)
{
IM.Increment++;
ModelState.Remove("Increment");
return View(IM);
}
答案 1 :(得分:0)
标签仅供展示。它的值不会提交回服务器。请改用文本框并将其放在表单中。
@Html.TextBoxFor(m => m.Increment);