Хотя я прочитал документацию по Html.HiddenFor, я не понял, что он использовал для...
Может ли кто-нибудь объяснить его использование и дать короткий пример?
Где эти помощники должны войти в код?
Хотя я прочитал документацию по Html.HiddenFor, я не понял, что он использовал для...
Может ли кто-нибудь объяснить его использование и дать короткий пример?
Где эти помощники должны войти в код?
Он создает скрытый ввод в форме для поля (из вашей модели), которое вы передаете ему.
Полезно для полей в Model/ViewModel, которые вам необходимо сохранить на странице и вернуться обратно при выполнении другого вызова, но не должны отображаться пользователем.
Рассмотрим следующий класс ViewModel:
public class ViewModel
{
public string Value { get; set; }
public int Id { get; set; }
}
Теперь вы хотите, чтобы страница редактирования сохранила идентификатор, но его не видно:
<% using(Html.BeginForm() { %>
<%= Html.HiddenFor(model.Id) %><br />
<%= Html.TextBoxFor(model.Value) %>
<% } %>
В результате получается эквивалент следующего HTML:
<form name="form1">
<input type="hidden" name="Id">2</input>
<input type="text" name="Value" value="Some Text" />
</form>
И для использования скрытого ввода идентификатора в методе действия "Редактировать":
[HttpPost]
public ActionResult Edit(FormCollection collection)
{
ViewModel.ID = Convert.ToInt32(collection["ID"]);
}
Как и многие функции, этот способ может быть использован многими различными способами для решения многих различных проблем, я думаю об этом как еще одном инструменте в наших инструментах.
До сих пор в ходе обсуждения основное внимание уделялось простому скрытию идентификатора, но это только одно значение, почему бы не использовать его для множества значений! Это то, что я делаю, я использую его для загрузки значений в классе только по одному виду за раз, потому что html.beginform создает новый объект, и если ваш объект модели для этой точки зрения уже имел некоторые значения, переданные ему, эти значения будут потеряны, если вы не предоставите ссылку на эти значения в beginform.
Чтобы увидеть отличную мотивацию для html.hiddenfor, я рекомендую вам увидеть Передача данных из представления в контроллер в .NET MVC - "@model" не выделяя
Использование кода Razor @Html.Hidden или @Html.HiddenFor аналогично следующему HTML-коду
<input type="hidden"/>
И также ссылайтесь на следующую ссылку