为什么不对 @Html.LabelFor 值进行修改?
Why don't modifications to an @Html.LabelFor value persist?
我是 MVC 4 的新手,
我想做的是,制作一个显示增量整数的标签
在 cshtml 页面中
@Html.LabelFor(m => m.Increment, Model.Increment)
在控制器页面
public ActionResult Index(IncrementModel IM){
IM.Increment ++;
return View(IM);
}
开始的结果是0,按一个这个增加到1,那么无论按多少次,值永远是1。
标签仅供展示。它的值不会提交回服务器。请改用文本框并将其放在表单中。
@Html.TextBoxFor(m => m.Increment);
LabelFor
辅助方法呈现这样的标签。
<label for="Increment">Increment</label>
这不会显示您的 mdoel 增量 属性 的值。如果你想要那样,你可以简单地把它渲染成
<p>@Model.Increment</p>
或者使用 DisplayFor()
辅助方法。
@Html.DisplayFor(s=>s.Increment)
这也只会将值呈现给您的页面。当您 post 表单时,它不会 post 将页面中的当前值传递给 HttpPost 操作。为此,您需要一个表单域。它可以是文本框、隐藏字段等。
@using(Html.BeginForm())
{
@Html.DisplayFor(s=>s.Increment)
@Html.HiddenFor(s => s.Increment)
<input type="submit"/>
}
但现在当您 post 值并在操作方法中递增它并将其发回时,输入字段(隐藏字段)的值不会每次都用新值更新。因为 ModelStateDictionary
现在对这个 属性 有一些值,这是第一个 update.This 值之后的值,当我们为 Increment
[=36] 渲染隐藏字段时将使用=].这就是您将 1
视为值并且它永远不会改变的原因。
您应该做的是从 ModelStateDictionary 中明确删除此项。
[HttpPost]
public ActionResult Index(IncrementModel IM)
{
IM.Increment++;
ModelState.Remove("Increment");
return View(IM);
}
我是 MVC 4 的新手, 我想做的是,制作一个显示增量整数的标签
在 cshtml 页面中
@Html.LabelFor(m => m.Increment, Model.Increment)
在控制器页面
public ActionResult Index(IncrementModel IM){
IM.Increment ++;
return View(IM);
}
开始的结果是0,按一个这个增加到1,那么无论按多少次,值永远是1。
标签仅供展示。它的值不会提交回服务器。请改用文本框并将其放在表单中。
@Html.TextBoxFor(m => m.Increment);
LabelFor
辅助方法呈现这样的标签。
<label for="Increment">Increment</label>
这不会显示您的 mdoel 增量 属性 的值。如果你想要那样,你可以简单地把它渲染成
<p>@Model.Increment</p>
或者使用 DisplayFor()
辅助方法。
@Html.DisplayFor(s=>s.Increment)
这也只会将值呈现给您的页面。当您 post 表单时,它不会 post 将页面中的当前值传递给 HttpPost 操作。为此,您需要一个表单域。它可以是文本框、隐藏字段等。
@using(Html.BeginForm())
{
@Html.DisplayFor(s=>s.Increment)
@Html.HiddenFor(s => s.Increment)
<input type="submit"/>
}
但现在当您 post 值并在操作方法中递增它并将其发回时,输入字段(隐藏字段)的值不会每次都用新值更新。因为 ModelStateDictionary
现在对这个 属性 有一些值,这是第一个 update.This 值之后的值,当我们为 Increment
[=36] 渲染隐藏字段时将使用=].这就是您将 1
视为值并且它永远不会改变的原因。
您应该做的是从 ModelStateDictionary 中明确删除此项。
[HttpPost]
public ActionResult Index(IncrementModel IM)
{
IM.Increment++;
ModelState.Remove("Increment");
return View(IM);
}