PHP で設計されたサイトから ASP.net で Web サイトを設計しています。JavaScript を介してフォーム チェックを行い、検証に合格した場合は Ajax を介してすべてのデータを送信します。
コード ビハインドを介して送信ボタンから JavaScript を起動し、返された値を読み取ってから、ポストバックしてデータを保存するか、ユーザーが JavaScript によって示されたフィールドを修正するまで何もしないことは可能ですか?
javascriptで検証を行っている場合、検証に合格するとjavascriptボタンをクリックする非表示の送信ボタンを作成します。
<input type="button" value="validate" onclick="Validate()" />
<asp:Button ID="aspButton" class="aspButton" OnClick="CodeBehindMethod" style="display: none;" />
<script>
function Validate() {
//if validation passes
$(".aspButton").click(); //This is the reason for the class on this button, since
//asp buttons have huge long stupid id names
//else do some kind of error notification
}
</script>
コードビハインドで検証している場合は、送信ボタンからポストバックを使用してみませんか?
.NET では、ボタン コントロールに、任意の js 関数またはコードを入力する onClientClick があります。return false; を追加してください。上記のコードの後、それ以外の場合、.net は完全なポストバックを起動します。
これはハックかもしれませんが、これにも更新パネルを使用することを検討できます。ちょっとした考え。
はい。これにはいくつかの方法があります。ハンドラーは超軽量なので好きです。ただし、Javascript をプルして .NET のバリデーターを使用する方が、おそらく作業は少ないでしょう。念のため、ハンドラーの例を次に示します。
public class CheckData : IHttpHandler
{
public bool IsReusable
{
get { return false; }
}
public void ProcessRequest(HttpContext context)
{
string sInputData = context.Request["input_post_var"];
context.Response.ContentType = "text/plain";
if (!String.IsNullOrEmpty(sInputData))
context.Response.Write("1");
else
context.Response.Write("0");
}
}
これらのいずれかを作成するには、ソリューション内のフォルダーを右クリックし、[新しい項目を追加...] で [ジェネリック ハンドラー] を見つけます。
AJAX.NET を使用することもできますが、実際にはフレームワーク全体が信じられないほど肥大化しているため、できれば避けたいと思います。それはただの好みです。