LabelFor
輔助方法渲染一個這樣的標籤。
<label for="Increment">Increment</label>
這不會顯示您的遞增屬性的值。如果你想,你可以簡單地使它像
<p>@Model.Increment</p>
或者使用DisplayFor()
helper方法。
@Html.DisplayFor(s=>s.Increment)
這也將簡單地將值呈現給您的頁面。發佈表單時,它不會將頁面中的當前值發佈到HttpPost操作。爲此你需要一個表單域。它可以是一個文本框,隱藏域等。
@using(Html.BeginForm())
{
@Html.DisplayFor(s=>s.Increment)
@Html.HiddenFor(s => s.Increment)
<input type="submit"/>
}
但現在還當您發佈的值和操作方法增加它,併發送回,輸入的字段(隱藏字段)的值不會每次都用新值更新。因爲ModelStateDictionary
現在對此屬性有一些值,這是第一次更新後的值。當我們爲Increment
屬性渲染隱藏字段時,將使用此值。這就是你看到1
作爲價值的原因,它從不改變。
你應該做的是明確地從ModelStateDictionary中刪除這個項目。
[HttpPost]
public ActionResult Index(IncrementModel IM)
{
IM.Increment++;
ModelState.Remove("Increment");
return View(IM);
}
我會嘗試它,希望它的工作 –
不能,價值並沒有ModalState保存 –
我只是在一個簡單的MVC示例項目中驗證它,它完全工作。我相信你錯過了我發佈的內容。請仔細檢查。 – Shyju