Entity Framework 4,0 Database First ve ASP.NET 4 Web Forms-Bölüm 8 ' i kullanmaya başlama

Tom Dykstra tarafından

Contoso Üniversitesi örnek Web uygulaması, 4,0 ve Visual Studio 2010 Entity Framework kullanarak nasıl ASP.NET Web Forms uygulamalar oluşturacağınızı gösterir. Öğretici serisi hakkında daha fazla bilgi için, serideki ilk öğreticiye bakın

Verileri biçimlendirmek ve doğrulamak için dinamik veri Işlevselliğini kullanma

Önceki öğreticide saklı yordamları uyguladık. Bu öğreticide, dinamik veri işlevlerinin aşağıdaki avantajları nasıl sağlayabilmesinin nasıl yapılacağı gösterilmektedir:

  • Alanlar, veri türlerine göre görüntülenmek üzere otomatik olarak biçimlendirilir.
  • Alanlar, veri türlerine göre otomatik olarak onaylanır.
  • Biçimlendirme ve doğrulama davranışını özelleştirmek için veri modeline meta veri ekleyebilirsiniz. Bunu yaptığınızda, biçimlendirme ve doğrulama kurallarını tek bir yerde ekleyebilirsiniz ve dinamik veri denetimleri kullanarak alanlara her yerden eriştiğinizde otomatik olarak uygulanır.

Bunun nasıl çalıştığını görmek için, var olan öğrenciler. aspx sayfasındaki alanları görüntülemek ve düzenlemek için kullandığınız denetimleri değiştireceksiniz ve Student varlık türünün ad ve Tarih alanlarına biçimlendirme ve doğrulama meta verileri ekleyeceksiniz.

Image01

DynamicField ve DynamicControl denetimleri kullanma

Öğrenciler. aspx sayfasını açın ve StudentsGridView denetiminde ad ve kayıt tarihi TemplateField öğelerini aşağıdaki biçimlendirme ile değiştirin:

<asp:TemplateField HeaderText="Name" SortExpression="LastName">
                <EditItemTemplate>
                    <asp:DynamicControl ID="LastNameTextBox" runat="server" DataField="LastName" Mode="Edit" />
                    <asp:DynamicControl ID="FirstNameTextBox" runat="server" DataField="FirstMidName" Mode="Edit" />
                </EditItemTemplate>
                <ItemTemplate>
                    <asp:DynamicControl ID="LastNameLabel" runat="server" DataField="LastName" Mode="ReadOnly" />,
                    <asp:DynamicControl ID="FirstNameLabel" runat="server" DataField="FirstMidName" Mode="ReadOnly" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:DynamicField DataField="EnrollmentDate" HeaderText="Enrollment Date" SortExpression="EnrollmentDate" />

Bu biçimlendirme, öğrenci adı şablonu alanında TextBox ve Label denetimlerinin yerine DynamicControl denetimleri kullanır ve kayıt tarihi için bir DynamicField denetimi kullanır. Biçim dizesi belirtilmedi.

StudentsGridView denetiminden sonra ValidationSummary denetimi ekleyin.

<asp:ValidationSummary ID="StudentsValidationSummary" runat="server" ShowSummary="true"
        DisplayMode="BulletList" Style="color: Red" />

SearchGridView denetiminde, ad ve kayıt tarihi sütunlarının işaretlemesini, StudentsGridView denetiminde yaptığınız gibi değiştirin, ancak EditItemTemplate öğesini atlayın. SearchGridView denetiminin Columns öğesi artık aşağıdaki biçimlendirmeyi içerir:

<asp:TemplateField HeaderText="Name" SortExpression="LastName">
                <ItemTemplate>
                    <asp:DynamicControl ID="LastNameLabel" runat="server" DataField="LastName" Mode="ReadOnly" />,
                    <asp:DynamicControl ID="FirstNameLabel" runat="server" DataField="FirstMidName" Mode="ReadOnly" />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:DynamicField DataField="EnrollmentDate" HeaderText="Enrollment Date" SortExpression="EnrollmentDate" />

Students.aspx.cs açın ve aşağıdaki using ifadesini ekleyin:

using ContosoUniversity.DAL;

Sayfanın Init olayı için bir işleyici ekleyin:

protected void Page_Init(object sender, EventArgs e)
{
    StudentsGridView.EnableDynamicData(typeof(Student));
    SearchGridView.EnableDynamicData(typeof(Student));
}

Bu kod, dinamik verilerin, Student varlığının alanları için bu veri bağlantılı denetimlerde biçimlendirme ve doğrulama sağlayacağı belirtir. Sayfayı çalıştırdığınızda aşağıdaki örnekte olduğu gibi bir hata iletisi alırsanız, genellikle Page_Init``EnableDynamicData yöntemi çağırmayı unutmuş demektir:

Could not determine a MetaTable. A MetaTable could not be determined for the data source 'StudentsEntityDataSource' and one could not be inferred from the request URL.

Sayfayı çalıştırın.

Image03

Kayıt tarihi sütununda, zaman tarih ile birlikte görüntülenir, çünkü özellik türü DateTime. Daha sonra bunu düzeltireceksiniz.

Şimdilik, dinamik verilerin otomatik olarak temel veri doğrulaması sağladığını fark edersiniz. Örneğin, Düzenle' ye tıklayın, tarih alanını temizleyin, Güncelleştir' e tıklayın ve değer veri modelinde null atanabilir olmadığından dinamik verilerin bu gerekli alanı otomatik olarak yaptığından emin olmalısınız. Sayfada, ValidationSummary denetimindeki bir alan ve hata iletisinden sonra bir yıldız görüntülenir:

Image05

Hata iletisini görmek için fare işaretçisini yıldız işareti üzerinde tutabilmeniz için ValidationSummary denetimini atlayabilirsiniz.

Image06

Dinamik veriler de kayıt tarihi alanına girilen verilerin geçerli bir tarih olduğunu doğrular:

Image04

Gördüğünüz gibi, bu genel bir hata iletisidir. Sonraki bölümde, iletileri özelleştirmeyi ve doğrulama ve biçimlendirme kurallarını nasıl özelleştireceğinizi göreceksiniz.

Veri modeline meta veriler ekleme

Genellikle, dinamik veriler tarafından sunulan işlevselliği özelleştirmek istersiniz. Örneğin, verilerin görüntülendiğini ve hata iletilerinin içeriğini değiştirebilirsiniz. Ayrıca, veri türlerine bağlı olarak dinamik verilerin otomatik olarak sağladığı daha fazla işlevsellik sağlamak için veri doğrulama kurallarını da özelleştirebilirsiniz. Bunu yapmak için varlık türlerine karşılık gelen kısmi sınıflar oluşturursunuz.

Çözüm Gezgini, contosouniversity projesine sağ tıklayın, başvuru ekle' yi seçin ve System.ComponentModel.DataAnnotationsbir başvuru ekleyin.

Image11

Dal klasöründe, yeni bir sınıf dosyası oluşturun, Student.csolarak adlandırın ve içindeki şablon kodunu aşağıdaki kodla değiştirin.

using System;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;

namespace ContosoUniversity.DAL
{
    [MetadataType(typeof(StudentMetadata))]
    public partial class Student
    {
    }

    public class StudentMetadata
    {
        [DisplayFormat(DataFormatString="{0:d}", ApplyFormatInEditMode=true)]
        public DateTime EnrollmentDate { get; set; }

        [StringLength(25, ErrorMessage = "First name must be 25 characters or less in length.")]
        [Required(ErrorMessage="First name is required.")]
        public String FirstMidName { get; set; }

        [StringLength(25, ErrorMessage = "Last name must be 25 characters or less in length.")]
        [Required(ErrorMessage = "Last name is required.")]
        public String LastName { get; set; }
    }
}

Bu kod Student varlığı için kısmi bir sınıf oluşturur. Bu parçalı sınıfa uygulanan MetadataType özniteliği, meta verileri belirtmek için kullandığınız sınıfı tanımlar. Meta veri sınıfı herhangi bir ada sahip olabilir, ancak varlık adı artı "metadata" kullanılması yaygın bir uygulamadır.

Meta veri sınıfındaki özelliklere uygulanan öznitelikler biçimlendirme, doğrulama, kurallar ve hata iletileri belirler. Burada gösterilen öznitelikler aşağıdaki sonuçlara sahip olacaktır:

  • EnrollmentDate bir tarih (bir süre olmadan) olarak gösterilir.
  • Her iki ad alanı da 25 karakter uzunluğunda veya daha az olmalı ve özel bir hata iletisi sağlanmalıdır.
  • Her iki ad alanı da gereklidir ve özel bir hata iletisi sağlanır.

Öğrenciler. aspx sayfasını yeniden çalıştırın ve tarihlerin şu zamanlarda görüntülendiğini görürsünüz:

Image08

Bir satırı düzenleyin ve ad alanlarındaki değerleri temizlemeye çalışın. Alan hatalarını gösteren yıldız işaretleri, bir alanı bıraktığınızda, Güncelleştir' e tıklamadan önce görüntülenir. Güncelleştir' e tıkladığınızda, sayfada belirttiğiniz hata iletisi metni görüntülenir.

Image10

25 karakterden daha uzun adlar girmeyi deneyin, Güncelleştir' e tıklayın ve belirttiğiniz hata iletisi metnini görüntüler.

Image09

Veri modeli meta verilerinde bu biçimlendirme ve doğrulama kurallarını ayarladığınıza göre, kurallar, DynamicControl veya DynamicField denetimleri kullandığınız sürece bu alanlarda değişiklik gösteren veya bu alanlarda değişiklik sağlayan her sayfada otomatik olarak uygulanır. Bu, programlama ve sınamayı daha kolay hale getiren ve veri biçimlendirme ve doğrulamanın bir uygulama genelinde tutarlı olmasını sağlayan, yazmanız gereken gereksiz kod miktarını azaltır.

Daha Fazla Bilgi

Bu, Entity Framework ile çalışmaya başlama konusunda bu öğreticiyle sonuçlanır. Entity Framework nasıl kullanacağınızı öğrenmenize yardımcı olacak daha fazla kaynak için, sonraki Entity Framework öğretici serisinde ilk öğreticiye devam edin veya aşağıdaki siteleri ziyaret edin: