.net 강좌 - Html.HiddenFor는 무엇을합니까?




패턴 mvc란 (5)

비록 내가 Html.HiddenFor에 관한 문서를 읽었지만, 나는 그것이 무엇을 위해 사용되는지를 파악하지 못했다 ...

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

그 도우미는 어디에서 코드를 작성해야합니까?


Answers

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

Model / 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>

편집 작업 방법에서 숨겨진 ID 입력을 다시 사용하려면 다음을 수행하십시오.

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


많은 기능과 마찬가지로이 도구는 여러 가지 다른 문제를 해결하기 위해 여러 가지 방법으로 사용할 수 있습니다. 도구 벨트의 또 다른 도구로 생각합니다.

지금까지는 단순히 ID를 숨기는 것에 중점을 두었습니다.하지만 이는 하나의 가치에 지나지 않습니다. 많은 가치에 사용하지 마십시오. html.beginform은 새로운 객체를 생성하고 해당 뷰의 모델 객체에 이미 전달 된 일부 값이 있기 때문에, 내가 수행하는 작업이며, 한 번에 하나의 뷰에서만 클래스의 값을로드하는 데 사용합니다. beginform의 값에 대한 참조를 제공하지 않으면 값이 손실됩니다.

html.hiddenfor에 대한 큰 동기를 보기 위해 .NET MVC에서 뷰의 데이터를 컨트롤러로 전달하는 것이 좋습니다. - "@model"은 강조 표시하지 않습니다.


AppDomain.CurrentDomain.BaseDirectory

MbUnit GUI와 함께 작동합니다.





.net asp.net-mvc asp.net-mvc-2 html-helper