답변:
전달하는 필드 (모델에서)에 대한 양식에 숨겨진 입력을 작성합니다.
페이지에서 유지해야하고 다른 호출이 수행 될 때 다시 전달되었지만 사용자가 볼 수없는 모델 / ViewModel의 필드에 유용합니다.
다음 ViewModel 클래스를 고려하십시오.
public class ViewModel
{
public string Value { get; set; }
public int Id { get; set; }
}
이제 편집 페이지에 ID를 저장하고 싶지만 표시되지 않도록합니다.
<% 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>
그리고 Edit 작업 메서드에서 숨겨진 ID 입력을 다시 사용하려면 :
[HttpPost]
public ActionResult Edit(FormCollection collection)
{
ViewModel.ID = Convert.ToInt32(collection["ID"]);
}
많은 기능과 마찬가지로이 기능은 다양한 문제를 해결하기 위해 여러 가지 방법으로 사용될 수 있습니다. 저는 우리의 툴 벨트에있는 또 다른 도구라고 생각합니다.
지금까지 논의는 단순히 ID를 숨기는 데 중점을 두었지만 이는 하나의 값일뿐입니다. 많은 값에 사용하지 않는 것이 좋습니다! html.beginform이 새 객체를 생성하고 해당 뷰에 대한 모델 객체에 이미 전달 된 값이있는 경우, 한 번에 하나의 뷰만 클래스에서 값을로드하는 데 사용합니다. beginform에서 해당 값에 대한 참조를 제공하지 않으면 값이 손실됩니다.
html.hiddenfor에 대한 큰 동기를 확인하려면 .NET MVC의 뷰에서 컨트롤러로 데이터 전달- "@model"이 강조 표시되지 않음 을 참조하십시오.
Razor 코드 사용 @ Html.Hidden 또는 @ Html.HiddenFor는 다음 Html 코드와 유사합니다.
<input type="hidden"/>
또한 다음 링크를 참조하십시오.