2011-11-11 9 views
0

私はasp.netを使用していますが、runat = "server"ではなく通常のフォームを使用しています。ここでは1です:提出時にフォームが消去されるのを防ぐ

<form action="addUser.aspx" method="post"> 
    <fieldset> 
     <label>Username</label> 
     <input name="username" type="text" maxlength="50" /> 
     <span id="usernameInfo" class="fieldInfo" runat="server"></span> 
    </fieldset> 

    <fieldset> 
     <label>Password</label> 
     <input name="password" type="password" maxlength="50" /> 
     <span id="passwordInfo" class="fieldInfo" runat="server"></span> 
    </fieldset> 

    <fieldset> 
     <label>Email</label> 
     <input type="text" maxlength="50" /> 
     <span id="emailInfo" class="fieldInfo" runat="server"></span> 
    </fieldset> 

    <div class="buttonHolder"> 
     <button type="submit">Submit</button> 
     <span id="generalInfo" runat="server"></span> 
    </div> 

</form> 

フォームがsubmitedとページをリロードした場合、フォーム内のすべてのフィールドが空です。フォームを検証し、ユーザー名が既にユーザーに入っているかどうかをユーザーに知らせる必要があるため、これは面倒です。

どうしてですか?フォームを処理するすべてのコードを取り除いても、サブミット時にクリアされます。 Web上では、困難な人たちが持っているのは反対です。

なぜ私の逆が起きているのですか?それを修正するにはどうすればよいですか?

+0

ビューステート(あなたがサーバーコントロールを使用していない、特に以来)を診断するためにこれを容易になるだろう、送信されたフォームを処理のコード上の

詳細。必要があれば、Fiddlerを使用して、http投稿にフォームデータが含まれていることを確認できます。 –

+0

@KenHendersonフォームデータがサーバーに届いているのが分かります。問題は、ページが更新されたときにユーザーのブラウザからそれをクリアすることです。すべてのフォーム処理コードを取り出すとしても、これは起こります。 – Oliver

+1

個人的に私は以下のボビーの答えに行きます。しかし、L Johnson氏は、サーバーコントロールを使用していない場合は、表示させたい場合にページがサーバー上で処理を終了する前に、ポストされたデータをポピュレートする責任があることを示しています。 –

答えて

2

答えでは、なぜhtml入力を使用しているのかは不明です。しかし、asp.netコントロールを使用することができれば、これを使用することをお勧めします。代わりにasp.net TextBoxコントロールのビューステートを持つこの

<input type="text" maxlength="50" /> 

<asp:TextBox id="textbox" runat="server" /> 

は、あなたが提出したが、検証エラーのbecasue同じページにとどまる]をクリックした後でも、テキストボックスにあなたの価値を維持するの世話をします。別のページに移動してページに来ると、価値がなくなります。ここhttp://msdn.microsoft.com/en-us/library/ms972976.aspx

0

電子メールでは、「名前」属性は投稿を読むために必要な属性です。

値を読み取る方法を示すコードは提供していませんが、これはコード内で読み込もうとしていると仮定しています。

あなたはRequest ["NameOfControl"]として値を読み取ることができます。

ページが読み込まれたときに値を設定していますが、入力された値が上書きされる可能性がありますか?

READING上記のコメント:

は、あなたがコントロールは、サーバー側ではありませんので、あなたはrunat =「server」を使用しWebBrowserコントロールを使用していないので... JavaScriptを使用してコントロールを再移入する必要があります

あり ViewStateがないため、手動で値を再入力する必要があります。

関連する問題