2012-10-11 1 views
3

내가라는 주 사전 속성이 값 :MVC3는 HiddenFor 사전

public IDictionary<DayOfWeek, Day> Week { get; private set; } 

내가 HiddenFor에 떨어져 그 값을 전달하기 위해 노력하고있어 (일)

@Html.HiddenFor(x => x.Week.Values) 

그것은을 수있다 모델의 속성으로 할 수 없으므로 x.Week.Values.ToList();

사전 값을 Html.HiddenFor으로 전달하는 방법은 무엇입니까?

답변

2

글쎄 HiddenFor을 사용하고 있기 때문에 양식 게시시 사전 값을 리 바인드해야한다고 가정합니다. 뷰에 사전을 결합하려면이 같은 것을 할 필요가 것 :

사전에 각 값은 이름 속성으로, 자신의 숨겨진 입력 필드가 주어집니다

@foreach (var key in Model.Week.Keys) 
{ 
    Html.DisplayFor(model=>model.Week[key]); 
} 
: name="Week.{key here}

반면에, 자바 스크립트에서 뭔가를 할 수 있도록 모델의 데이터를 클라이언트에 보내면 JSON으로 페이지에 작성하는 것이 좋습니다.

<script type="text/javascript"> 
@Html.Raw(Json.Encode(Model.Week)) 
</script> 
+0

흠 이상한 :

는 각 키에 대해 이런 식으로 뭔가를 출력합니다. 왜 그런지 안다? –

+0

상자에서 꺼내지는 못했지만 원하는 경우 사용자 정의 편집기를 만들 수 있습니다. –

0

내가 사용합니다 :

@foreach (var key in Model.Week.Keys) 
{ 
    @Html.HiddenFor(model=>model.Week[key]); 
} 

'@'는 HTML을 출력 면도칼에 필요한 것 전에 숨겨진 필드를. `@ Html.EditorFor (X => x.Week)를`비록 그들을 통과하지 않습니다하지만

<input data-val="true" data-val-number="The field Int32 must be a number." 
    data-val-required="The Int32 field is required." id="Week_5_" name="Week[5]" 
    type="hidden" value="3">