2013-07-03 3 views
7

EditorTemplate을 사용할 때 모델의 값을 화면에 표시하고 컨트롤러에 다시 게시하려면 어떤 도우미를 사용해야합니까?ASP.Net MVC 컨트롤러에 레이블 값 다시 게시

즉. 내가 TextBoxFor를 사용하는 경우 :

@Html.TextBoxFor(model => model.RoomTypeName) 

... 다음 사용자가 텍스트를 수정할 수 있습니다 ...

차라리 그냥 텍스트를 표시,하지만 내가 사용하는 경우 :

@Html.DisplayTextFor(model => model.RoomTypeName) 

합니다. .. 그런 다음 컨트롤러에 다시 게시되지 않습니다.

@Html.DisplayTextFor(model => model.RoomTypeName) 
@Html.HiddenFor(model => model.RoomTypeName) 

나는 작품,하지만 난 알고 :

그래서 나는 텍스트를 표시 할 수 있습니다, 또한 두 번째 숨겨진 필드, 예를 추가, 내 모델 상태가 유효한지 확인하기 위해 유일한 방법입니다 더 우아한 방법이 있는지 궁금해합니다. 그래서 값을 표시하고 숨겨진 요소로 복제 할 필요없이 다시 게시 할 수 있습니까?

마크

+2

'HiddenFor' 사용은 이미 꽤 우아하고 표준 적입니다. – sed

+0

ok, 감사합니다 스티브 - MVC/C#이 "모든 도우미에 적합"할 수 있다고 생각합니다.하지만 그 대답이면 게시 해주세요. 건배, Mark – Mark

+1

보기에 UI 로직을 다시 생각해 볼 수 있습니다. '모든 것'(레이블 포함)을 웹 서버에 게시하면 WebForms와 같은 일종의 일입니다. MVC에서는 필요한 것을 게시하고 데이터베이스/캐시에서 필요한 값을 검색하기 만하면됩니다. 다시, _might_, 나는 당신의 모든 상황을 알지 못하며 이런 종류의 논리를 구현할 타당한 이유가있을 수 있습니다. –

답변

12
@Html.DisplayTextFor(model => model.RoomTypeName) 
@Html.HiddenFor(model => model.RoomTypeName) 

이것은 당신이 달성하고자하는 일의 방식으로 매우 깨끗하고 표준입니다, 감사합니다.

정확히 동일한 일을하는 HTML 도우미를 만들려면 한 줄만 저장하면 미래에 코드를 읽을 수있는 다른 사람이나 혼자서 혼란을 겪을 수 있습니다.