6

現在、ASP.NETログインコントロールを使用しています。カスタムの失敗テキストを設定したり、ログインが失敗した場合に失敗テキストが表示されるページにリテラルを追加したりできます。また、発生する可能性のあるすべてのエラーを収集するページに検証の概要があります(現時点では、ユーザーがログイン名とパスワードを入力したことを検証するだけです。

ログインコントロールの失敗テキストを検証サマリーの項目として追加できれば本当に便利ですが、これが可能かどうかはわかりません。

スタックオーバーフローの巨大な頭脳が私にいくつかの指針を与えることができることを願っていますか?

ありがとう!

/トーマスカーンPS。私はC#でコーディングしています。

4

2 に答える 2

10

私はうまくいく解決策を見つけました!

このページに、次のようなCustomValidatorを追加します。

<asp:CustomValidator id="vldLoginFailed" runat="server" ErrorMessage="Login failed. Please check your username and password." ValidationGroup="loginControl" Visible="false"></asp:CustomValidator>

また、次のようなValidationSummaryもあります。

<asp:ValidationSummary id="ValidationSummary" ValidationGroup="loginControl" runat="server" DisplayMode="BulletList" CssClass="validationSummary" HeaderText="Please check the following"></asp:ValidationSummary>

ログインコントロールで、OnLoginErrorにメソッドを追加したので、次のようになります。

<asp:Login ID="loginControl" runat="server" VisibleWhenLoggedIn="false" OnLoginError="loginControl_LoginError">

コードビハインドでは、ログインエラーが発生したときにトリガーされるメソッドを作成します。これは次のようになります。

protected void loginControl_LoginError(object sender, EventArgs e)
{
    CustomValidator vldLoginFailed = (CustomValidator)loginControl.FindControl("vldLoginFailed");
    vldLoginFailed.IsValid = false;
}

したがって、ログインエラーが発生すると、loginControl_LoginErrorメソッドが呼び出されます。CustomValidatorを検出し、IsValidをfalseに設定します。CustomValidatorは検証グループ「loginControl」に属しているため、そのエラーメッセージがValidationSummaryに表示されます。

于 2010-08-20T14:38:15.930 に答える
0

潜在的に、

ログインコントロールによって報告されたエラーをチェックするValidationSummaryコントロールのRenderメソッドをオーバーライドできます。エラーがどのように報告されるかはわかりませんが、検証コントロールを使用してPage.Validatorsコレクションを検査すると、検証の概要の出力を更新するために必要な情報が得られます。

于 2010-08-05T07:25:31.303 に答える