5

私はこれを広範囲にグーグルで検索しましたが、答えが見つからなかったので、助けを求めてここに投稿しています.

データベースオブジェクトクラスで検証が指定されたasp.net 4.5プロジェクトがあります。例えば:

[Required(ErrorMessage = "Name is a required field.")]
public string Name { get; set; }

このエラー メッセージをフォーム ページのフィールドの横に表示させる方法はありますか? 検証の概要は問題なく表示されますが、従来のコードの多い asp.net バリデーター (RequiredFieldValidator など) を使用せずに、それぞれのフィールドの横に表示されるようにしたいと考えています。

助けてくれてありがとう。

編集: MVC ではなく、Web フォームを使用しています

4

2 に答える 2

2

ModelErrorMessage コントロールを使用できます。たとえば、FirstName プロパティを持つモデルがあるとします。次のようなものを追加します。

<asp:ModelErrorMessage ID="FirstNameErrorMessage" ModelStateKey="FirstName" runat="server" />
于 2013-07-30T06:01:37.227 に答える
1

残念ながら、WebForms モデル バインディングの検証フレームワークは、まだ MVC ほど包括的ではありません。1 つは、データ注釈のクライアント側検証が組み込まれていないことです。また、データ注釈エラーを表示する唯一の方法は、ShowModelStateErrors プロパティ (デフォルトは true) を持つ ValidationSummary コントロールを使用することです。これは非常に簡単な例です:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:FormView ID="FormView" runat="server" RenderOuterTable="false" ItemType="Person"
            DefaultMode="Insert" InsertMethod="FormView_InsertItem">
            <InsertItemTemplate>
                <asp:ValidationSummary ID="ValSummary" runat="server" ValidationGroup="FormGroup"
                    HeaderText="The following problems occured when submitting the form:" />
                <table>
                    <tr>
                        <td>
                            <asp:Label ID="NameLabel" runat="server" AssociatedControlID="NameField">Name</asp:Label>
                        </td>
                        <td>
                            <asp:TextBox ID="NameField" runat="server" Text='<%# BindItem.Name %>' ValidationGroup="FormGroup" />
                        </td>
                    </tr>
                </table>
                <asp:Button ID="SaveButton" runat="server" CommandName="Insert" Text="Save" ValidationGroup="FormGroup" />
            </InsertItemTemplate>
        </asp:FormView>
    </form>
</body>
</html>

コードビハインド:

public partial class create_person : System.Web.UI.Page
{
    public void FormView_InsertItem()
    {
        var p = new Person();
        TryUpdateModel(p);
        if (ModelState.IsValid)
        {
            Response.Write("Name: " + p.Name + "<hr />");
        }
    }
}

クラス:

using System.ComponentModel.DataAnnotations;

public class Person
{
    [Required, StringLength(50)]
    public string Name { get; set; }
}

データ注釈の検証に対するクライアント側/JavaScript のサポートがないため、モデル状態エラーを生成する唯一の方法は、ポストバックの後です。コントロールの横にインライン検証が必要な場合でも、標準の検証コントロールを使用する必要があります。

ユーザーの声に関する機能要求を投稿し、データ注釈の統合を改善することを検討するよう求めました: http://aspnet.uservoice.com/forums/41202-asp-net-web-forms/suggestions/3534773-include-client-side -validation-when-using-data-ann

アイデアが気に入ったら、ユーザーの声に投票してください。お役に立てれば。

于 2013-02-24T18:50:31.200 に答える