2012-01-10 3 views
2

나는 내보기에 이런 일이 : HttpContext.Current.Request.Form을 통해 HTML 페이지에서 선택된 체크 박스를 확인하는 방법은 무엇입니까?

<input type="checkbox" value="1" name="services-for" /> 
<input type="checkbox" value="2" name="services-for" /> 
<input type="checkbox" value="3" name="services-for" /> 

이의 사용자가 1과 3을 확인했다 가정 해 봅시다.

에서 POST 행동 내 컨트롤러의 기능은 다음과 같다 :

public ActionResult SaveProfile() 

하지 SaveProfile(string name, List<int> servicesFor)과 선반 (100 이상) 필드 입력 극단적 수와 많은 인코딩 된 값을 갖는다는 사실에 기인 (예 : name = "item-542146").

그래서 HttpContext.Current.Request.Form을 사용하여 양식 값에 액세스합니다. 그러나 HttpContext.Current.Request.Form["services-for"]은 다중 텍스트가 아닌 일반 텍스트 입력에서 정상적으로 작동하는 동안 null을 반환합니다.

어떻게해야합니까?

답변

2

당신이 여전히 쉽게 작업 방법을 테스트 할 수 있습니다로 HttpContext.Current.Request에서 값을 검색하는 대신 다음과 같이 FormCollection 매개 변수를 사용하여 더 낫다 : 더 확인이없는 경우 form["services-for"]가 null 반환 할 수 있습니다

public ActionResult SaveProfile(FormCollection form) 
{ 
    var servicesFor = (form["services-for"] ?? "") 
     .Split(',') 
     .Select(int.Parse); 

    // ... 
} 

하는 것으로를 게시 된 양식에있는 항목을 입력하십시오.

+0

감사합니다. 나는이 방법을 알지 못했고 우월하다고 생각합니다. 나는 단지 [ "services-for"] == "1,2,3,4,5"를 테스트하고 형성 했으므로 모두 좋다. – Normandy

+0

다행입니다. 도움이 될 수 있습니다. StackOverflow에 오신 것을 환영합니다! –

관련 문제