2013-12-09 3 views
0

나는 현재 이런 일이 : foo와 키 시작되는필터링 양식 키/이름

<input type="hidden" value="123" name="foo_1"/> 
<input type="hidden" value="123" name="foo_2"/> 
<input type="hidden" value="123" name="bar_2"/> 

가 난 단지 형태로 값을 필요 :

foreach (string key in Request.Form.Cast<string>().Where(key => 
                 key.StartsWith("foo_"))) 
{ 
    //get value (123) + the ending number from the string (1 and 2 in this case) 
} 

내가 분할의 팬이 아니에요 문자열이나 무언가로 시작하는 키에 대한 필터링. 이 일을하는 데 더 "예쁘다"는 방법이 있어야한다고 생각하니?

<input type="hidden" value="123" name="[foo][1]"/> 
+1

비활성화 된 입력은 게시되지 않지만 양식을 생성 할 때 (서버 측) 또는 게시 전 (클라이언트 측)으로 완료해야합니다. –

+2

입력이 비활성화되지 않고 숨겨져 있습니다. 이는 분명히 게시됩니다. –

+1

숨김! = 비활성화 됨. 그래서 그들은 게시되어야합니다. ASP.NET에는 객체 매핑 시스템이 없으므로 양식 요소를 반복해야합니다. C# MVC는 그러나 당신이 찾고있는 것일지도 모르는 객체에 요소를 매핑 할 수 있습니다. 그러나 이것을 달성하기 위해서는 MVC 모델에서 전체 사이트를 빌드해야합니다. – Kami

답변

1

같은 아마 뭔가 단순히 접미사없이, 모든 컨트롤 동일한 이름 foo을 제공합니다.

그런 다음 서버 쪽에서 Request.Form["foo"]을 찾으십시오. 쉼표로 구분 된 모든 값을 포함합니다. 그런 다음

는 데이터의 여러 청크를 유지해야하는 경우 string.Split()로 분할 할 수 있습니다 (예를 들어, 수와 관련 데이터) 예 수의 대시 데이터는

  • 은 특별한 형식을 사용할 수 있습니다, , "1-firstValue", "2-secondValue"와 같습니다. 페이지를 렌더링 할 때 서식을 지정하고 게시 된 값을 가져올 때 페이지를 구문 분석 할 수 있습니다.
  • 은 JSON.Net과 같은 잘 알려진 시리얼 라이저를 사용합니다. 숨겨진 필드를 만들 때 직렬화 된 데이터를 값으로 설정합니다. 게시 된 값을 얻으면이를 직렬화합니다 (게다가 클라이언트 측에서 JSON 데이터를 조작 할 수 있습니다).

JSON 직렬 변환기를 사용하는 경우 모든 데이터를 숨겨진 단일 필드로 유지하고 서버 측에서 쉽게 복구 할 수도 있습니다.

사용하기 쉽고 잘 문서화되어있는 JSON.NET을 사용할 수 있습니다. (이전 .NET Framework의 경우이 버전이 사용 중이며 이전 버전 인 경우).

+0

글쎄, 적어도 내 현재 솔루션보다 낫다 :) 고마워. 그러나, 이것도 내가 필요로하는 결말에 걸리지 않습니다. 하지만 뭔가 알아낼거야 – Johan

+1

내 편집을 참조하십시오. 최신 정보가 포함되어 있습니다. – JotaBe