LabelFor
вспомогательный метод визуализации такой этикетки.
<label for="Increment">Increment</label>
Это событие не будет показывать значение вашего свойства Increment of mdoel. Если вы хотите, вы можете просто сделать его как
<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"/>
}
Но теперь, когда вы размещаете значение и увеличиваем его в методе действия и отправить его обратно, входные поля значение (скрытое поле) не будет обновляется каждый раз с новым значением. Поскольку значение ModelStateDictionary
имеет некоторое значение для этого свойства, это значение после первого обновления. Это значение будет использовано, если мы отобразим скрытое поле для свойства Increment
. Именно по этой причине вы видите 1
как значение, и оно никогда не меняется.
Что вам нужно сделать, это явно удалить этот элемент из ModelStateDictionary.
[HttpPost]
public ActionResult Index(IncrementModel IM)
{
IM.Increment++;
ModelState.Remove("Increment");
return View(IM);
}
я постараюсь на него, надеюсь, что он работает –
не может, значение не сохранить в ModalState –
Я просто проверил это в простом проекте MVC и полностью работал. Я уверен, что вы что-то упустили из того, что я опубликовал. Пожалуйста, проверьте дважды. – Shyju