0

SharePointアプリケーションページに小さなフォームがあります。

 <form method="post" id="registration-form" action="default.aspx" class="form-general cf" data-querycompletion-url="ajax/searchinstant.aspx">
     <input type="text" id="name" name="name" placeholder = "Your name" runat="server" />
          <input type="text" id= "company" name="company" placeholder= "Your company" runat="server"/>
    <input type="text" id="srchtxtx" class="search" name="visitor" placeholder="visitor" runat="server" />
    <input name="btnConfirm" id="Submit1" class="right" value="register" type="submit" runat="server" /></form>

default.aspxのcodebehindeで、次のように値にアクセスしたいと思います。

string val1 = name.value;
string val2 = company.value;
string val3 = srchtxtx.value;

ただし、上記では、それぞれval1、val2、val3に空の文字列が返されます。runat = "server"しかし、タグから削除すると、次のように<input>値に正常にアクセスできます。

string val1 = Request.Form["name"];
string val2 = Request.Form["company"];
string val3 = Request.Form["visitor"];

runat = "server"問題は、<input>タグで使用すると空の文字列値が返される理由です。なんらかの理由で、タグrunat = "server"から削除できませんでした。<input>

<input>runat = "server"属性を仮定しながら、分離コードで値にアクセスする他の方法はあります<input>か?

また、コントロールを使用しないように制限されています<asp:TextBox>

4

1 に答える 1

1

null値で送信されたhtmlフォームで示唆したように、これはフォームがrunat="server"asp.netによってポストバックデータが処理されないためです。つまり、srchtxtxなどのプロパティが入力されません。

ただし、html要素にはページ上で一意のIDが引き続き付与されるため、単に実行することはできません。Request.Form["srchtxtx"];

これを回避するには、input要素のUniqueIDを使用して、ポストバックされた値を取得します。

HTML

<form method="post" id="registration-form" action="default.aspx" class="form-general cf" data-querycompletion-url="ajax/searchinstant.aspx">
    <input type="text" id="srchtxtx" name="srchtxtx" runat="server" />
    <input name="btnConfirm" id="Submit1" class="right" value="register" type="submit" runat="server" />
</form>

C#

protected void Page_Load(object sender, EventArgs e)
{
    string val1 = srchtxtx.Value; // always ""
    string val2 = Request.Form["srchtxtx"]; // always null
    string val3 = Request.Form[srchtxtx.UniqueID]; // input value
}
于 2013-01-13T13:53:49.977 に答える