2012-06-27 4 views
0

나는 하나의 텍스트 박스 컨트롤을 가지고 꽤 복잡한 폼 (실제로는 사용자 정의 컨트롤)을 가지고 있는데, 다시 게시 할 필요가 없다. 게시물에서 컨트롤을 제거 할 수있는 방법이 있습니까? 예,이 텍스트 상자는 편집 가능합니다.Do not post textbox

추가 정보 : 신용 카드 처리 양식이므로 "최종"제출은 다른 사이트의 페이지에 게시됩니다. 그러나 이보다 앞서 많은 서버 측 처리가 진행되고 있습니다. 나는 신용 카드 번호 텍스트 상자를 다른 페이지로 옮길 수 있다는 것을 알고 있습니다. 그러나이 요구 사항은 매우 늦게 왔으며 많은 일을 다시하지 않아도됩니다.

+0

같은 페이지에 다른 양식의 텍스트 상자를 넣을 수 없습니까? –

+0

ASP.NET은 여러 양식을 허용하지 않습니다. – jaypeagi

+0

혼란스러워. 다시 게시 할 때 값을 사용할 수 없거나 텍스트 상자 컨트롤 자체에서 자동 다시 게시를 수행하는 것을 원하지 않는다고 말하고 있습니까? – Josh

답변

0

그래서 상황은 당신이 작업을 다른 사이트로 가리키는 사용자의 브라우저에서 렌더링되는 양식을 가지고있다 그리고 당신은 하나 있는지 확인해야 양식 제출시 양식 필드가 전송되지 않습니다.

그와 같은 경우에는 소리가 나지 않으므로 값이 게시되지 않았는지 절대적으로 확인하십시오. 자바 스크립트를 사용하여이 문제를 해결할 수있는 여러 가지 가능한 방법이 있습니다 (제출 전에 입력 값을 지우고 값을 지우는 등).하지만 스크립팅을 해제하면 문제가 생길 것입니다.

하지만 양식을 다른 서버로 보내거나 (PostBackUrl을 사용하여 양식의 동작을 변경하거나 단추를 활성화하는) 양식을 준비 할 수 있으므로 텍스트 상자의 Enabled 속성을 false로 설정할 수도 있습니다. 즉, 다른 서버에 게시하기 위해 더 이상 최종 페이지에서 편집 할 수 없습니다. 또는 텍스트 상자를 숨길 수 있으므로 (전혀 위임되지 않았 음) 필드를 대신 레이블 또는 리터럴로 표시 할 수 있습니다.

그럼에도 불구하고 여전히 어떻게 든 비밀 값이 양식의 viewstate에 포함되지 않았는지 확인해야합니다. 라벨이나 리터럴을 사용할 경우를 대비하여 또한 마지막 포스트 백에서 비활성화되었거나 숨겨진 텍스트 상자에 대해서도 마찬가지입니다. 일반적으로 viewstate는 base64로 인코딩 된 문자열이므로 거기에서 신용 카드 번호를 찾는 것이 쉽습니다. 당신은 아마도 다른 서버에 게시하기 위해 양식을 설정하기 전에 마지막 게시물에서 해당 컨트롤 (또는 전체 페이지)에 대한 viewstate를 해제하여이 문제를 해결할 수 있습니다.

서버에 대한 마지막 포스트 백이 확실하지 않은 경우 중요한 변경 사항없이 운이 나쁘다고 생각합니다. 죄송합니다. Asp.Net 웹 양식에서 겉으로보기에 사소한 것들은 어렵습니다.

다른 서버에 보내고 "확인 페이지"종류가 필요한 데이터로 채워진 별도의 페이지를 추가 할 수 있습니다. 이 페이지에서 viewstate를 끄고 (레이블 및 리터럴 등을 사용하여) 요약 된 모든 데이터를 표시 할 수 있으며 게시 할 실제 데이터는 양식에 숨겨진 필드로 포함될 수 있습니다. 그런 다음 사용자가 "확인"을하면 해당 양식이 다른 서버에 게시됩니다.

+0

훌륭한 답장을 보내 주셔서 감사합니다. 나는 당신이 만든 마지막 제안을 사실로 가지고갔습니다. – DaveInClt

2

가장 쉬운 방법은 ASP TextBox가 아닌 HTML 입력을 사용하는 것입니다. runat="server"이 설정되어 있지 않으면 코드에서 액세스 할 수 없습니다.

또는 viewstate가 속성을 사용 (http://msdn.microsoft.com/en-us/library/system.web.ui.control.enableviewstate.aspx)

+3

HTML 입력 필드는 '이름'속성이 있다고 가정하고 포스트 백에서 계속 액세스 할 수 있습니다. 그들은 코드에서 ID로 호출 할 수 없습니다 ('txtName.Text' 대신에'Request.Form [ "txtName"]'같은 것을해야합니다). –

관련 문제