2012-05-16 2 views
3

다음을 고려하십시오. 클라이언트의 텍스트 상자에 추가 된 텍스트 값이 다시 게시 할 때 viewstate에 추가됩니다. 따라서 페이지가 다시로드 될 때 값이 여전히 텍스트 상자에 나타납니다.다시 게시하기 전에 viewstate 이벤트가 있습니까?

listbox1에서 listbox2로 jquery를 통해 값을 이동하면 listbox2의 항목이 viewstate에 추가되지 않습니다. (참고 : 항목은 POST 전에 선택되며 listbox2의 값은 request.form.getvalues ​​("listbox2")를 통해 포스트 백시 서버에서 사용할 수 있습니다. getvalue (index) .tostring())

저는 아닙니다. 주위를 둘러 보면서, 나는 그것을 얻었다. 왜 "왜"listbox2 값이 추가되지 알고 싶습니다. 일부 이벤트가 텍스트 상자에 대해 실행되지만 목록 상자에는 발생하지 않습니까? 무슨 일이 벌어지고 있는지 더 잘 이해하려고 노력합니다. 감사!

답변

3

클라이언트의 텍스트 상자에 추가 된 텍스트 값이 다시 게시 할 때 viewstate에 추가됩니다. 따라서 페이지가 다시로드 될 때 값이 여전히 텍스트 상자에 나타납니다.

이 문장은 올바르지 않습니다. TextBox 서버 컨트롤의 값은 브라우저가 포스트 데이터에서 포스트 백을 전송하기 때문에 포스트 백에서 보존되며, 포스트 백에서 TextBox은 포스트 데이터의 값을 Text 속성으로 복사하기 때문에 포스트 백간에 보존됩니다. EnableViewState="False"을 설정하여 확인할 수 있으므로보기 상태가 포함되지 않습니다. (필자는 TextBox가 표시되도록 여기에 가정 및 사용할 수있어, 그렇지 않으면 브라우저 는 포스트 데이터에 값을 전송하지 않으며, 뷰 상태 는 값을 유지하기 위해 필요합니다.)

어떻게 jquery를 통해 listbox1에서 listbox2로 값을 이동하면 listbox2의 항목이 viewstate에 추가되지 않습니다.

다중 선택 ListBox 서버 컨트롤의 경우 브라우저는 게시물 데이터에서 선택한 각 항목의 값을 보냅니다. 다시 게시 할 때 ListBox은 게시물 데이터의 각 값을보고 Items 컬렉션에서 해당 항목을 검색하고 해당 항목의 Selected 속성을 True으로 설정합니다. 인식 할 수없는 값을 Items 컬렉션에 추가하지 않습니다. 대신 이벤트 유효성 검사를 사용하면 "유효하지 않은 포스트 백 또는 콜백 인수"예외가 발생합니다. 다시, 뷰 상태는 관련되지 않습니다.

+0

왜 클라이언트의 listbox2에 항목이 추가 되었습니까? (jquery를 통해) 서버의 Items 컬렉션에서 사용할 수없는 이유는 무엇입니까? – mtntrailrunner

+1

'ListBox' 컨트롤은 ASP.NET 팀이 동적으로 생성 한 항목을 자동으로 'Items' 컬렉션에 추가하도록 설계되지 않았습니다. (마지막 단락에서 언급했듯이 악의적 인 사용자가 게시물 데이터를 변경하려고 시도하기 때문에 예외가 발생합니다.) 그렇게하는 자체 ListBox 컨트롤을 만들 수는 있지만, 브라우저가 옵션 텍스트를 전송하지 않기 때문에 각 항목의 * value *. –

관련 문제