Подтвердить что ты не робот

Что делает Html.HiddenFor?

Хотя я прочитал документацию по Html.HiddenFor, я не понял, что он использовал для...

Может ли кто-нибудь объяснить его использование и дать короткий пример?

Где эти помощники должны войти в код?

4b9b3361

Ответ 1

Он создает скрытый ввод в форме для поля (из вашей модели), которое вы передаете ему.

Полезно для полей в 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>

Ответ 2

И для использования скрытого ввода идентификатора в методе действия "Редактировать":

[HttpPost]
public ActionResult Edit(FormCollection collection)
{
    ViewModel.ID = Convert.ToInt32(collection["ID"]);
}

Ответ 3

Как и многие функции, этот способ может быть использован многими различными способами для решения многих различных проблем, я думаю об этом как еще одном инструменте в наших инструментах.

До сих пор в ходе обсуждения основное внимание уделялось простому скрытию идентификатора, но это только одно значение, почему бы не использовать его для множества значений! Это то, что я делаю, я использую его для загрузки значений в классе только по одному виду за раз, потому что html.beginform создает новый объект, и если ваш объект модели для этой точки зрения уже имел некоторые значения, переданные ему, эти значения будут потеряны, если вы не предоставите ссылку на эти значения в beginform.

Чтобы увидеть отличную мотивацию для html.hiddenfor, я рекомендую вам увидеть Передача данных из представления в контроллер в .NET MVC - "@model" не выделяя