[.net] Html.HiddenFor는 무엇을합니까?

Html.HiddenFor에 대한 설명서를 읽었지만 그것이 무엇에 사용되는지 이해하지 못했습니다 …

누군가 그 용도를 설명하고 간단한 예를 들어 줄 수 있습니까?

그 도우미는 코드에서 어디로 가야합니까?



답변

전달하는 필드 (모델에서)에 대한 양식에 숨겨진 입력을 작성합니다.

페이지에서 유지해야하고 다른 호출이 수행 될 때 다시 전달되었지만 사용자가 볼 수없는 모델 / 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"/>

또한 다음 링크를 참조하십시오.

https://msdn.microsoft.com/en-us/library/system.web.mvc.html.inputextensions.hiddenfor(v=vs.118).aspx


답변