6

私は、データ注釈を使用した asp.net 4.5 webforms モデル バインディングの大ファンです。

ascx:

     <asp:FormView ItemType="Contact" runat="server" DefaultMode="Edit" 
     SelectMethod="GetContact" UpdateMethod="SaveContact">
        <EditItemTemplate>   

              <asp:ValidationSummary runat="server" ID="valSum" />

              Firstname: <asp:TextBox  runat="server"  ID="txtFirstname" Text='<%#: BindItem.Firstname %>' /> 


              Lastname: <asp:TextBox  runat="server"  ID="txtLastname" Text='<%#: BindItem.Lastname %>' />

              Email:  <asp:TextBox  runat="server"  ID="txtEmail" Text='<%#: BindItem.Email %>' />     

              <asp:Button ID="Button1"  runat="server" Text="Save" CommandName="Update" />
        </EditItemTemplate>   
    </asp:FormView>

.cs:

    public void SaveContact(Contact viewModel)
    {
        if (!Page.ModelState.IsValid)
        {
            return;
        }            
    }              

    public Contact GetContact() 
    {
         return new Contact();
    }

モデル:

    public class Contact
    {
        [Required]
        [StringLength(10, ErrorMessage="{1} tis te lang")]   
        public string Firstname { get; set; }

        [Required]
        [StringLength(10)]
        public string Lastname { get; set; }

        [Required]
        [EmailAddress]       
        public string Email { get; set; }

    }

質問:

クライアント側の検証は、MVC のような Web フォームですぐにサポートされますか? または、サードパーティのライブラリ (DAValidation) に依存する必要があります。Html.EnableClientValidation() の良さを webforms に移植することは可能ですか?

よろしく、

バート

4

2 に答える 2

1

ASP.NET WebForms プロジェクトで発見したように、クライアント側の検証にモデルの検証属性を全体的に再利用することはありません。

たとえば、名前、電子メール、誕生日などのさまざまなプロパティを持つ連絡先データ モデルは、常に同じように使用されるとは限りません。必須フィールドがある場合とない場合があり、必要な入力データでさえ、アプリケーションのさまざまなポイントで異なる場合があります。

したがって、私たちのプロジェクトでは、クライアント側の検証実装とモデル属性の両方を使用します。

私たちが適用する一般的な考え方は次のとおりです。

  • クライアント側では、不必要なポストバックを避け、ユーザーに即座に具体的な応答を提供するために、できるだけ具体的にしたいと考えています。
  • サーバー側では、モデル属性に加えて、より多くのデータベースおよびビジネス指向の検証ルールを適用し、それほど具体的には失敗しません。さらに、必要に応じて、一部のフィールドが相互に依存している場合、いくつかの「プロパティ間」検証が行われます。

クライアント側には、jQuery Validate Plugin ( http://jqueryvalidation.org/ ) を選択しました。

独自のコントロール セット (組み込みの WebControls から派生) を作成し、さまざまな (さらにはいくつかのカスタム) データ ルールをレンダリングします。

于 2016-04-07T09:28:21.663 に答える