2009-03-02 4 views
0

ASP.NET 1.1 용 VB.NET으로 작성된 레거시 웹 응용 프로그램에서 작업하고 있습니다. 하나의 특정 페이지에는 여러 필드가있는 양식이 있습니다. 드롭 다운 상자 변경 값에 대한 응답으로 여러 드롭 다운 상자를 첫 번째 옵션으로 다시 설정하고 UI에서 모두 "사용 안 함"으로 설정하여 여러 필드를 지우고 있습니다. 이를 위해 jQuery를 사용하고 있습니다. 이 모든 필드에 CSS 클래스를 추가하면 jQuery 셀렉터가 다음과 같이됩니다. $ ("*. my-css-class"). 설명 할 샘플 코드가 있습니다.jQuery 통합 문제가있는 레거시 ASP.NET 1.1

var fields = $("*.fields"); 
if(some_condition) 
{ 
fields.val(""); 
fields.attr("selectedIndex", 0); 
fields.attr("disabled", "disabled"); 
} 

위의 JS 코드에 대한 응답으로 예상대로 UI 업데이트,하지만 난 버튼 클릭에 대한 응답으로 다시 페이지를 게시 할 때, 원래 값은 여전히 ​​이러한 컨트롤에 관련된 서버 측에서 유지됩니다. 예를 들어, txtSomething은 css 클래스 "fields"가있는 필드 중 하나입니다 (위의 jQuery 선택기에서 선택하게됩니다). 사용자는이 텍스트 상자에 "1234"를 입력하고 양식을 제출합니다. 동일한 페이지가 값을 유지하면서 다시 게시되거나이 페이지로 돌아가서 서버 측의 값을 미리 채운다 (예를 들어 사용자가 요약 페이지의 편집 버튼을 클릭 함) 컨트롤 txtSomething이에 초기화됩니다. 클라이언트는 값 "1234"를가집니다. jQuery 코드는 사용자가 UI에서 볼 수있는 값을 지운 다음 사용자가 제출 버튼을 클릭합니다. jQuery 선택기로 값을 조회하면이 필드의 값은 빈 문자열입니다. 페이지가 다시 게시되고 코드를 단계별로 실행하거나 (이 컨트롤의 값으로 무언가를하는 경우) 여전히 "1234"입니다.

중요한 점은 이러한 값이 한 번 제출 된 후 브라우저로 다시 전송된다는 것입니다. 따라서 제출 된 양식이나 이러한 값이 서버 측에서 바인딩되거나 설정된 모든 경우에 미리 채워진 브라우저에 출력됩니다 (기본값 또는 빈 값으로 브라우저에 출력되는 것과는 대조적으로). 페이지를 기본값 (빈 텍스트 상자)으로로드하고 텍스트를 입력 한 다음 js 함수를 트리거하여 이러한 필드를 지우면 입력 한 값이 서버로 전달되지 않습니다.

답변

1

왜 이러한 필드를 비활성화해야합니까? 컨트롤을 사용하지 않으면 서버에 값을 게시 할 수 없게됩니다. 적어도 asp.net 컨트롤이 서버 측에서 비활성화되어있을 때 발생합니다.

업데이트 1 :.는 단지 서버 측이, 그래서이 예에서 "... :) http://www.w3.org/TR/html401/interact/forms.html#h-17.12.1 그것을 보았다 경우 의심을 가지고하지 수, 입력 요소가 비활성화 따라서는받을 수 없습니다 사용자 입력도 그 값을 양식과 함께 제출하지 않을 것입니다. "그래서 클라이언트 측을 비활성화해도 값을 게시하지 않더라도

+0

나는 서버 측에서이를 비활성화하지 않습니다. 사용자가 값을 선택하거나 값을 입력 할 수 없도록 클라이언트에서 해당 기능을 비활성화합니다. – Rich

+0

우수 ... 감사합니다. 나는 "disabled"대신에 "readonly"를 사용했고 값들은 이제 서버로 전송됩니다. 내 유일한 문제는 지금 드롭 다운 목록에서 "읽기 전용"이 작동하지 않는다는 것입니다. 따라서 선택 항목에 대해 서버에서 동등한 attr을 찾거나 추악한 수동 작업을 수행합니다. 다시 Thx – Rich