2010-02-17 4 views
3

나는이 같은, 내가 숨겨진 필드를 ASP.NET 웹 양식을 가지고 :이이 do_POST 방법에ASP.NET HTML 폼 요소를 읽는 방법?

<form id="form1" runat="server" action="http://localhost/fa/Default.aspx"> 
     <div> 
    <input id="requestData" type="hidden" name="requestData" value="" runat="server" /> 
    <asp:Button ID="btnPOST" Text="POST" runat="server" OnClick="do_POST" /> 
     </div> 
    </form> 

:

protected void do_POST(object sender, EventArgs e) 
     { 
//requestDataField is of the type protected global::System.Web.UI.HtmlControls.HtmlInputHidden requestData; 

      requestDataField.Text = "FOO!"; 
     } 

나는 눌러 (양식을 제출하면 나는이 가지고 wheer 버튼), 그것은) 서버 (AN 핸들러로 이동 :

string requestData = context.Request.Form["requestData"]; 

내가 빈 문자열을 얻기를 ...

하지만이 같은 값을 할당하는 경우 :

<input id="requestData" type="hidden" name="requestData" value="FOO" runat="server" /> 

을 나는 "FOO"

내가 무엇을 놓치고거야?

+0

"requestDataField.Text ="FOO! ";" "requestDataField.Value ="FOO! ";" 그러나 나는 단지 html 요소를 채우거나 동적으로 제어하고 서버 측에서 읽기를 원합니다. – user252816

답변

2

페이지를 포스트 백한 후에 메서드가 호출되기 때문에 이유가 없습니다. 의미, 그것은 실제로 작동합니다. 텍스트 .Value 불행히도 당신은 이미 당신의 양식을 읽었을 때 그것은 빈 값이었습니다. 함수가 실행될 때까지 제출하지 말라고 말할 수있는 프로젝트에서 작업 한 것을 기억합니다 (그러나 aspx를 보내기 전에 전체를 실행해야하는 javascript가 필요했습니다).포스트 백을하기 전에 폼이 함수를 실행하도록 강제하는 방법이 있는지 확인해야합니다.

1

do_POST 메서드는 클라이언트가 아닌 서버에서 실행되므로 <input> 컨트롤을 나타내는 서버 쪽 개체의 값을 설정합니다. context.Request.Form["requestData"]은 설정되지 않은 POST 요청에서 제출 된 클라이언트 측 데이터에서 필드 값을 가져 오므로 비어 있습니다.

onClick을 클라이언트 측 기능으로 사용하려면 약간 다르게해야합니다. OnClientClick 속성 (onClick 대신)을 사용하십시오.

<asp:Button ID="btnPOST" Text="POST" runat="server" OnClientClick="do_POST" /> 

<script> 
    function do_POST() { 
    document.getElementById("requestData").value = "FOO!"; 
    } 
</script> 
+0

JS가 없으면 어떨까요? – user252816

+0

숨겨진 입력 필드에 값을 가져 오는 유일한 방법은 javascript를 사용하거나 페이지가 생성 될 때 서버 측에 값을 배치하는 것입니다. – Ray

+0

다른 입력란에 다른 입력란을 전달하면 어떻게됩니까? 다른 양식을 사용하여 양식에서 데이터를 전달할 수 있습니까? – user252816

1

내가 코드를 시도하고 여기에 몇 가지 변경을했다 : 그런 다음 필드 값을 설정하는 자바 스크립트 방법을 만들 수 있습니다.

  1. 변경 requestDataField.Text = "FOO!";

  2. requestData.Value = "FOO";에 또한 나는 두 개의 버튼을 추가했습니다. 하나는 do_POST 함수이고 UseSubmitBehaviour 속성은 False로 설정됩니다. 다른 하나는 양식을 제출하는 것이 었습니다.

클라이언트 쪽에서 설정하려면 자바 스크립트를 사용해야합니다.

1

사용 "값"대신 HtmlInputHidden 제어를위한 "텍스트"속성의 :

requestDataField.Value이 = "FOO!";

대신

requestDataField.Text이 = "FOO!"의;

관련 문제