2010-04-05 2 views
6

나머지 양식 결과와 다르게 처리해야하는 양식 섹션이 있습니다. 특수 처리가 필요한 섹션에서는 동일한 이름을 가진 3 개의 양식 필드를 반복해야합니다. 그들은 같은 이름을 가져야 만합니다. 나는 그것을 바꿀 수 없습니다. 나는 이런 식으로 뭔가를 시도 C#을 사용C#을 사용하여 같은 이름의 양식 필드 반복하기

<td><input name="Color" size="20" value="" type="text"></td> 
<td><input name="Color" size="20" value="" type="text"></td> 
<td><input name="Color" size="20" value="" type="text"></td> 

:

내가 이런 식으로 처리하려고 :

int i; 

for (i = 1; i <= Request.Form["Color"][i]; i++) 
{ 
    colorName.Text += Request.Form["Color"]; 
} 

리드 내가 말하는거다 형태의 섹션은 다음과 같이 보입니다

System.NullReferenceException: Object reference not set to an instance of an object.

방법 : 다음과 같은 예외로 동일한 이름의 양식 필드를 처리해야합니까?

답변

-1

Request.Form [ "Color"]이 null이거나 colorName이 aspx 페이지에서 발견되지 않습니다. 나는 당신의 코드에 기초하여 말할 수 없다. 그렇지 않으면 올바르게 표시됩니다. 어떤 유형의 html 요소는 "색상"입니까? HTML 요소 일 경우 id 및 name 속성이 모두 있는지 확인하십시오.

+1

클라이언트 측 스크립팅을 수행하는 경우가 아니면 ID가 필요하지 않습니다. – pdwetz

+0

이것이 실패하지 않는 이유입니다. 'i <= Request.Form [ "Color"] [i]'는 틀린데 (Request.Form [...]은 문자열이기 때문에 int <= char입니다.) 질문에는 HTML 코드가 있습니다 (적어도 지금은 대답이 나오기 3 분 전입니다). – PhistucK

0

각 양식을 목록에 추가하고 대신 ForEach 연산자를 사용하는 것이 좋습니다. 이미 수행하려고 시도하는 것보다 오래 기다릴지라도 말입니다.

private List<Request.Form> newList = new List<Request.Form>(); 

newList.Add(FormName1); 
newList.Add(FormName2); 
newList.Add(FormName3); 

foreach(Request.Form form in newList) 
{ 
    //perform logic 
} 

참고 : Request.Form이 양식 자체의 클래스 이름이라고 가정합니다.

본인은 직접 테스트를 해본 결과 약간의 오류가있을 수 있지만 어쨌든 도움이되기를 바랍니다.

0

게시 된 양식 값은 값이 간단한 문자열 인 이름/값 컬렉션에 불과하다는 것을 기억해야합니다. 따라서 동일한 이름을 가진 여러 양식 필드를 갖는 것은별로 중요하지 않습니다. 나는 그것이 실제로 허용되는지 여부조차 모른다.

하지만 말한대로 변경할 수는 없습니다. IE와 Chrome에서 빠른 테스트를 수행했으며 적어도이 브라우저에서는 쉼표로 구분 된 문자열과 같은 이름의 여러 양식 필드를 보내는 것으로 보입니다. 이 동작이 여러 브라우저에서 일관성이 있는지 확인하기 위해 좀 더 테스트 해 볼 수 있습니다. 그걸 염두에두고

, 당신은 말할 수 :

string colorValues = Request.Form["Color"]; 
string [] colors = colorValues.Split(','); 

색상 배열의 각 요소는 이제 게시 된 각 입력 요소의 값에 해당합니다.

11

스플릿이나 다른 특별한 마술을 할 필요가 없습니다. ASP.NET에서 문자열 배열을 가져올 수 있습니다.

string [] values ​​= Request.Form.GetValues ​​("Color");

+4

"값"을 사용하기 전에 Null 검사를하는 것을 잊지 마십시오. :) – pdwetz

관련 문제