사전에 ASP.NET MVC 바인딩
MVC 내에서 사전 값을 바인딩하려고합니다.
나는 행동 내에서 :
model.Params = new Dictionary<string, string>();
model.Params.Add("Value1", "1");
model.Params.Add("Value2", "2");
model.Params.Add("Value3", "3");
보기 내에서 다음과 같습니다.
@foreach (KeyValuePair<string, string> kvp in Model.Params)
{
<tr>
<td>
<input type="hidden" name="Params.Key" value="@kvp.Key" />
@Html.TextBox("Params[" + kvp.Key + "]")
</td>
</tr>
}
그러나 뷰는 초기 값을 표시하지 않으며 양식이 제출되면 Params
속성이 null입니까?
Scott Hanselman의이 게시물을 살펴보아야합니다. http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx
기본 바인더는 다음 형식의 사전을 이해합니다.
params[0].key = kvp.key
params[0].value = kvp.value
매개 변수의 색인은 0부터 시작하여 공백없이 순차적이어야합니다. 현재 도우미는이를 지원하지 않으므로 양식 입력 필드를 직접 만들어야합니다.
물론 다음과 같이 자신의 바인더를 구현할 수 있습니다. http://siphon9.net/loune/2009/12/a-intuitive-dictionary-model-binder-for-asp-net-mvc/
ASP.NET MVC 4에서 기본 모델 바인더는 일반적인 사전 인덱서 구문을 사용하여 사전을 바인딩합니다 property[key]
.
Dictionary<string, string>
모델에 가있는 경우 이제 다음 마크 업을 사용하여 직접 다시 바인딩 할 수 있습니다.
<input type="hidden" name="MyDictionary[MyKey]" value="MyValue" />
예를 들어 체크 박스 세트를 사용하여 사전 요소의 하위 집합을 선택하고 동일한 속성에 다시 바인딩하려면 다음을 수행 할 수 있습니다.
@foreach(var kvp in Model.MyDictionary)
{
<input type="checkbox" name="@("MyDictionary[" + kvp.Key + "]")"
value="@kvp.Value" />
}
ANTP의 대답 @ 구축, MVC는 (적어도 더 많은 작업의 수행시키는, 더 적은 자세한 방법은 TextBoxFor()
에 Dictionary<string, string>
- 나는 시도하지 않은 CheckBoxFor()
A의 Dictionary<xxx, bool>
) :
@foreach(var kvp in Model.MyDictionary)
{
@Html.Label(kvp.Key);
@Html.TextBoxFor(m => m.MyDictionary[kvp.Key]);
}
참고 URL : https://stackoverflow.com/questions/5191303/asp-net-mvc-binding-to-a-dictionary
'programing tip' 카테고리의 다른 글
Node.js를 사용하여 파일에 개체 쓰기 (0) | 2020.11.23 |
---|---|
Python 3.1.1 문자열을 16 진수로 (0) | 2020.11.23 |
iTerm2 또는 OSX Lion의 터미널에서 단어 점프 (0) | 2020.11.23 |
REST API : 단일 가져 오기에서 여러 리소스 요청 (0) | 2020.11.23 |
AngularJS 지시문 동적 템플릿 (0) | 2020.11.23 |