JQuery ValidatorプラグインAsp.Netコールサーバーメソッド
-
22-07-2019 - |
質問
JQuery検証プラグインを使用してフォームを検証します( http://docs.jquery.com / Plugins / Validation / )
たとえば、フォーム内のメールを検証できます。
私がやりたいのは、選択したユーザー名が既に存在するかどうかを検証することです。そのため、データベースを照会するサーバーメソッドを呼び出す必要があります。どうすればいいですか?
更新
balexandreの回答から、私は次のことを試みます:
$.validator.addMethod("userName",
function(value, element)
{
$.get
(
"CheckUser.aspx?User=" + value,
function(data)
{
if (data == "True")
{
return false;
}
else if (data == "False")
{
return true;
}
else
{
alert(data);
}
}
);
},
"User already exists");
$(document).ready
(
function()
{
$("#aspnetForm").validate
(
{
rules:
{
<%=txtUserName.UniqueID %>:
{
required: true,
email: true,
userName: true
}
}
}
);
}
);
応答では、1 ou 0ではなくブール値(TrueまたはFalse)を記述します。
検証関数が呼び出しであることを知っています。問題は、ユーザーが存在しない場合でも常にエラーメッセージが表示されることです。 trueが返される前に警告メッセージを入れて、届くかどうかを確認します。だから、なぜそれが機能しないのかわかりません...
解決
非常に簡単で、プロジェクトに多くのことを適用するのは素晴らしいテクニックです
1-コードビハインドファイルを使用して、 verifyUserAvailability.aspx というaspxページを作成します
2-aspxファイルの最初の行を除くすべての行を削除します
3- Page_Load イベント内の分離コードファイルで、次のようにデータベースを呼び出します
protected void Page_Load(object sender, EventArgs e) {
string username = Request["usr"];
int r = 0;
if(!String.IsNullOrEmpty(username))
if( yourDAL.getUserAvailability(username) )
// your method would send true if user is available to be used
r = 1;
Response.Clear();
Response.Write(r);
Response.Flush();
}
4-フォームページで、次のようなボタンを作成します
<input id="btnCheckAvailability" type="button"
value="Check availability"
onclick="javascript:checkAvailability();" />
5-checkAvailability()メソッドを作成します
<script type="text/language">
function checkAvailability() {
var $user = $("#UsernameInputBox");
$.get("verifyUserAvailability.aspx?usr=" + $user.val(), function(data) {
// this will call the page passing the username and return 1 or 0
if( data == "1" )
$user.css("background-color", "green");
else
$user.css("background-color", "red");
});
}
</script>
他のヒント
これでうまくいくはずです...
http://riderdesign.com /articles/Check-username-availability-with-JQuery-and-ASP.NET.aspx
または...
1つの答えは、サービスを呼び出す方法を示します&amp; 2番目は、ページメソッドを呼び出す方法を示しています。