Bir ASP.NET Sayfasında BLL ve DAL Düzeyi Özel Durumları İşleme (VB)

tarafından Scott Mitchell

PDF’yi İndir

Bu öğreticide, bir ASP.NET veri Web denetiminin ekleme, güncelleştirme veya silme işlemi sırasında bir özel durum oluşması durumunda kolay, bilgilendirici bir hata iletisinin nasıl görüntüleneceğini göreceğiz.

Giriş

Katmanlı uygulama mimarisi kullanarak bir ASP.NET web uygulamasındaki verilerle çalışmak aşağıdaki üç genel adımı içerir:

  1. İş Mantığı Katmanı'nın hangi yönteminin çağrılması gerektiğini ve bunu geçirmek için hangi parametre değerlerinin gerektiğini belirleyin. Parametre değerleri sabit kodlanabilir, program aracılığıyla atanabilir veya kullanıcı tarafından girilen girişler olabilir.
  2. yöntemini çağırın.
  3. Sonuçları işleme. Veri döndüren bir BLL yöntemini çağırırken bu, verilerin bir veri Web denetimine bağlanmasını içerebilir. Verileri değiştiren BLL yöntemleri için bu, bir dönüş değerine göre bazı eylemler gerçekleştirmeyi veya 2. Adımda ortaya çıkabilecek özel durumları düzgün bir şekilde işlemeyi içerebilir.

Önceki öğreticide gördüğümüz gibi, hem ObjectDataSource hem de veri Web denetimleri 1. ve 3. Adımlar için genişletilebilirlik noktaları sağlar. Örneğin GridView, alan değerlerini ObjectDataSource'un UpdateParameters koleksiyonuna atamadan önce olayını tetiklerRowUpdating; RowUpdated olayı ObjectDataSource işlemi tamamladıktan sonra tetikler.

1. Adım sırasında tetiklenen olayları zaten inceledik ve bunların giriş parametrelerini özelleştirmek veya işlemi iptal etmek için nasıl kullanılabileceğini gördük. Bu öğreticide, işlem tamamlandıktan sonra tetikleyen olaylara dikkatimizi çekeceğiz. Bu düzey sonrası olay işleyicileriyle, diğer şeylerin yanında, işlem sırasında bir özel durumun oluşup oluşmadığını belirleyebilir ve standart ASP.NET özel durum sayfasını varsayılan olarak ayarlamak yerine ekranda kolay, bilgilendirici bir hata iletisi görüntüleyerek düzgün bir şekilde işleyebiliriz.

Bu son düzey olaylarla çalışmayı göstermek için, düzenlenebilir bir GridView'da ürünleri listeleyen bir sayfa oluşturalım. Bir ürünü güncelleştirirken özel durum oluşursa ASP.NET sayfamız GridView'un üzerinde bir sorun oluştuğuna ilişkin kısa bir ileti görüntüler. Haydi başlayalım!

1. Adım: Ürünlerin Düzenlenebilir GridView'ını Oluşturma

Önceki öğreticide yalnızca iki alan ProductName ve UnitPriceile düzenlenebilir bir GridView oluşturduk. Bu, her ürün alanı için ProductsBLL bir parametrenin aksine yalnızca üç giriş parametresini (ürünün adı, birim fiyatı ve kimliği) kabul eden sınıfın UpdateProduct yöntemi için ek bir aşırı yükleme oluşturulmasını gerektiriyordu. Bu öğreticide, ürünün adını, birim başına miktarını, birim fiyatını ve stoktaki birimleri görüntüleyen ancak yalnızca stoktaki adın, birim fiyatının ve birimlerin düzenlenmesine izin veren düzenlenebilir bir GridView oluşturarak bu tekniği yeniden uygulayalım.

Bu senaryoya UpdateProduct uyum sağlamak için yöntemin dört parametre kabul eden başka bir aşırı yüklemesine ihtiyacımız olacak: ürünün adı, birim fiyatı, stoktaki birimler ve kimlik. ProductsBLL sınıfına aşağıdaki yöntemi ekleyin:

<System.ComponentModel.DataObjectMethodAttribute _
    (System.ComponentModel.DataObjectMethodType.Update, True)> _
Public Function UpdateProduct _
    (ByVal productName As String, ByVal unitPrice As Nullable(Of Decimal), _
ByVal unitsInStock As Nullable(Of Short), ByVal productID As Integer) As Boolean
    Dim products As Northwind.ProductsDataTable = _
        Adapter.GetProductByProductID(productID)
    If products.Count = 0 Then
        Return False
    End If
    Dim product As Northwind.ProductsRow = products(0)
    product.ProductName = productName
    If Not unitPrice.HasValue Then
        product.SetUnitPriceNull()
    Else
        product.UnitPrice = unitPrice.Value
    End If
    If Not unitsInStock.HasValue Then
        product.SetUnitsInStockNull()
    Else
        product.UnitsInStock = unitsInStock.Value
    End If
    Dim rowsAffected As Integer = Adapter.Update(product)
    Return rowsAffected = 1
End Function

Bu yöntem tamamlandığında, bu dört ürün alanını düzenlemeye olanak tanıyan ASP.NET sayfasını oluşturmaya hazırız. Klasöründeki sayfayı ErrorHandling.aspxEditInsertDelete açın ve Tasarım Aracı aracılığıyla sayfaya bir GridView ekleyin. GridView'u yeni bir ObjectDataSource'a bağlayın, yöntemini sınıfın ProductsBLLGetProducts() yöntemine ve Update() yöntemi UpdateProduct de yeni oluşturulan aşırı yüklemeye eşleyinSelect().

Dört Giriş Parametresi Kabul Eden UpdateProduct Yöntemi Aşırı Yüklemesini Kullanma

Şekil 1: Dört Giriş Parametresi Kabul Eden Yöntem Aşırı Yüklemesini Kullanma UpdateProduct (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Bu işlem, dört parametreli bir UpdateParameters koleksiyona ve ürün alanlarının her biri için bir alana sahip GridView'a sahip bir ObjectDataSource oluşturur. ObjectDataSource'un bildirim temelli işaretlemesi özelliğine OldValuesParameterFormatString değerini atar. Bu, original_{0}BLL sınıfımız adlı original_productID bir giriş parametresinin geçirilmesini beklemediğinden özel duruma neden olur. Bu ayarı bildirim temelli söz diziminden tamamen kaldırmayı unutmayın (veya varsayılan değer {0}olarak ayarlayın).

Ardından GridView'da yalnızca ProductName, , QuantityPerUnitUnitPriceve UnitsInStock BoundField değerlerini içerecek şekilde aşağı doğru ayrıştırın. Ayrıca, gerekli gördüğünüz tüm alan düzeyinde biçimlendirmeleri (özellikleri değiştirme gibi) uygulamaktan HeaderText çekinmeyin.

Önceki öğreticide BoundField'i hem salt okunur modda hem de düzenleme modunda para birimi olarak biçimlendirmeyi UnitPrice inceledik. Aynı şeyi burada da yapalım. Bu gerekli ayarın, Şekil 2'de gösterildiği gibi BoundField özelliğini HtmlEncode{0:c}DataFormatString olarak, özelliğini falseolarak ve değerini olarak ayarlamayı gerektirdiğini ApplyFormatInEditModetruehatırlayın.

UnitPrice BoundField'ı Para Birimi Olarak Görüntülenecek Şekilde Yapılandırma

Şekil 2: BoundField'ı UnitPrice Para Birimi Olarak Görüntülenecek Şekilde Yapılandırma (Tam boyutlu görüntüyü görüntülemek için tıklayın)

UnitPrice düzenleme arabiriminde değerini para birimi olarak biçimlendirmek için GridView'un RowUpdating olayı için para birimi biçimlendirilmiş dizeyi bir değere ayrıştıran bir decimal olay işleyicisi oluşturulması gerekir. Son öğreticideki olay işleyicisinin RowUpdating de kullanıcının bir UnitPrice değer sağladığından emin olmak için denetlediğini hatırlayın. Ancak, bu öğretici için kullanıcının fiyatı atmasına izin verelim.

Protected Sub GridView1_RowUpdating(ByVal sender As Object, _
    ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) _
    Handles GridView1.RowUpdating
    If e.NewValues("UnitPrice") IsNot Nothing Then
        e.NewValues("UnitPrice") = _
            Decimal.Parse(e.NewValues("UnitPrice").ToString(), _
            System.Globalization.NumberStyles.Currency)
    End If

GridView'umuz bir QuantityPerUnit BoundField içerir, ancak bu BoundField yalnızca görüntüleme amacıyla olmalıdır ve kullanıcı tarafından düzenlenebilir olmamalıdır. Bunu düzenlemek için BoundFields özelliğini ReadOnly olarak trueayarlamanız yeterlidir.

QuantityPerUnit BoundField'i Salt Okunur Yapma

Şekil 3: BoundField Read-Only yapın QuantityPerUnit (Tam boyutlu resmi görüntülemek için tıklayın)

Son olarak, GridView'un akıllı etiketinden Düzenlemeyi Etkinleştir onay kutusunu işaretleyin. Bu adımları ErrorHandling.aspx tamamladıktan sonra sayfanın Tasarım Aracı Şekil 4'e benzer görünmelidir.

Gerekli SınırAlanları Dışında Tümünü Kaldır ve Düzenlemeyi Etkinleştir Onay Kutusunu işaretleyin

Şekil 4: Gerekli SınırAlanları Dışında Tümünü Kaldır ve Düzenlemeyi Etkinleştir Onay Kutusunu Işaretleyin (tam boyutlu görüntüyü görüntülemek için tıklayın)

Bu noktada tüm ürünlerin ProductName, QuantityPerUnit, UnitPriceve UnitsInStock alanlarının bir listesi bulunur; ancak yalnızca ProductName, UnitPriceve UnitsInStock alanları düzenlenebilir.

Kullanıcılar artık stok alanlarındaki ürünlerin adlarını, fiyatlarını ve birimlerini kolayca düzenleyebilir

Şekil 5: Kullanıcılar artık stok alanlarındaki ürünlerin adlarını, fiyatlarını ve birimlerini kolayca düzenleyebilir (tam boyutlu görüntüyü görüntülemek için tıklayın)

2. Adım: DAL-Level Özel Durumlarını Düzgün bir Şekilde İşleme

Düzenlenebilir GridView'umuz, kullanıcılar düzenlenen ürünün adı, fiyatı ve stoktaki birimleri için yasal değerler girdiğinde harika bir şekilde çalışıyor olsa da, geçersiz değerler girilmesi bir özel durumla sonuçlanır. Örneğin, sınıftaki ProductNameAllowDBNull özelliğin ProductsRow özelliği olarak ayarlandığından değerin atlanması NoNullAllowedException'ın oluşmasına ProductNamefalseneden olur; veritabanı çalışmıyorsa, veritabanına bağlanmaya çalışırken TableAdapter tarafından bir SqlException oluşturulur. Herhangi bir eylem gerçekleştirmeden, bu özel durumlar Veri Erişim Katmanı'ndan İş Mantığı Katmanı'na, sonra ASP.NET sayfasına ve son olarak da ASP.NET çalışma zamanına doğru kabarır.

Web uygulamanızın nasıl yapılandırıldığına ve uygulamasından uygulamayı localhostziyaret edip etmediğinize bağlı olarak, işlenmeyen bir özel durum genel bir sunucu hata sayfasına, ayrıntılı bir hata raporuna veya kullanıcı dostu bir web sayfasına neden olabilir. ASP.NET çalışma zamanının yakalanmayan özel duruma nasıl yanıt verdiği hakkında daha fazla bilgi için bkz. ASP.NET'da Web Uygulaması Hata İşleme ve customErrors Öğesi .

Şekil 6'da, değeri belirtmeden bir ürünü güncelleştirmeye çalışırken karşılaşılan ekran gösterilmektedir ProductName . Bu, üzerinden localhostgeçerken görüntülenen varsayılan ayrıntılı hata raporudur.

Ürünün Adının Atlanması Özel Durum Ayrıntılarını Görüntüler

Şekil 6: Ürünün Adının Atlanması Özel Durum Ayrıntılarını Görüntüler (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Bu tür özel durum ayrıntıları bir uygulamayı test ederken yararlı olsa da, bir özel durum karşısında son kullanıcıya böyle bir ekran sunmak idealden daha düşüktür. Son kullanıcı büyük olasılıkla a'nın ne NoNullAllowedException olduğunu veya neden kaynaklandığını bilmez. Daha iyi bir yaklaşım, kullanıcıya ürünü güncelleştirmeye çalışırken sorun olduğunu açıklayan daha kolay bir ileti sunmaktır.

İşlem gerçekleştirilirken bir özel durum oluşursa, hem ObjectDataSource hem de veri Web denetimindeki son düzey olaylar bunu algılamak ve özel durumun ASP.NET çalışma zamanına kadar kabarcıklanmasını iptal etmek için bir araç sağlar. Örneğimizde, GridView'un RowUpdated olayı için bir özel durumun tetiklenip tetiklenmediğini belirleyen bir olay işleyicisi oluşturalım ve tetiklenmişse label Web denetiminde özel durum ayrıntılarını görüntüleyelim.

ASP.NET sayfasına bir Etiket ekleyerek, özelliğini olarak ayarlayarak ID ve özelliğini ExceptionDetails temizleyerek Text başlayın. Kullanıcının gözünü bu iletiye çekmek için özelliğini Warningolarak ayarlayınCssClass. Bu, önceki öğreticide dosyaya Styles.css eklediğimiz css sınıfıdır. Bu CSS sınıfının Label metninin kırmızı, italik, kalın ve fazladan büyük yazı tipinde görüntülenmesine neden olduğunu hatırlayın.

Sayfaya Etiket Web Denetimi Ekleme

Şekil 7: Sayfaya Etiket Web Denetimi Ekleme (Tam boyutlu resmi görüntülemek için tıklayın)

Bu Label Web denetiminin yalnızca bir özel durum oluştuktan hemen sonra görünür olmasını istediğimizden, olay işleyicisinde Page_Load özelliğini false olarak ayarlayınVisible:

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    ExceptionDetails.Visible = False
End Sub

Bu kodla, ilk sayfa ziyaretinde ve izleyen geri göndermelerde denetimin ExceptionDetailsVisible özelliği olarak falseayarlanır. GridView'un RowUpdated olay işleyicisinde algıladığımız DAL veya BLL düzeyinde bir özel durum karşısında denetimin ExceptionDetailsVisible özelliğini true olarak ayarlayacağız. Web denetimi olay işleyicileri, sayfa yaşam döngüsündeki Page_Load olay işleyiciden sonra gerçekleştiğinden Etiket gösterilir. Ancak, bir sonraki geri göndermede Page_Load , olay işleyicisi özelliğine geri döndürecek Visiblefalseve yeniden görünümden gizleyecektir.

Not

Alternatif olarak, bildirim temelli söz diziminde özelliğini atayarak Visible ve görünüm durumunu devre dışı bırakarak (özelliğini olarak ayarlayarak) denetimin Visible özelliğini falsefalse ayarlama gereksinimini EnableViewState kaldırabiliriz.Page_LoadExceptionDetails Bu alternatif yaklaşımı gelecek bir öğreticide kullanacağız.

Etiket denetimi eklendiyse sonraki adımımız GridView'un RowUpdated olayı için olay işleyicisi oluşturmaktır. Tasarım Aracı GridView'u seçin, Özellikler penceresi gidin ve GridView'un olaylarını listeleyen şimşek simgesine tıklayın. Bu öğreticinin önceki bölümlerinde bu olay için bir olay işleyici oluşturduğumuz için GridView RowUpdating olayı için zaten bir giriş olmalıdır. Olay için RowUpdated de bir olay işleyicisi oluşturun.

GridView'ın RowUpdated Olayı için Olay İşleyicisi Oluşturma

Şekil 8: GridView RowUpdated Olayı için Olay İşleyicisi Oluşturma

Not

Olay işleyicisini arkadaki kod sınıfı dosyasının en üstündeki açılan listeler aracılığıyla da oluşturabilirsiniz. Soldaki açılan listeden GridView'ı ve RowUpdated sağdakinden olayı seçin.

Bu olay işleyicisinin oluşturulması, ASP.NET sayfasının arka planda kod sınıfına aşağıdaki kodu ekler:

Protected Sub GridView1_RowUpdated(ByVal sender As Object, _
    ByVal e As System.Web.UI.WebControls.GridViewUpdatedEventArgs) _
    Handles GridView1.RowUpdated
End Sub

Bu olay işleyicisinin ikinci giriş parametresi, özel durumları işlemek için üç özelliği olan GridViewUpdatedEventArgs türünde bir nesnedir:

  • Exception atılan özel duruma bir başvuru; Özel durum oluşturmadıysa, bu özellik şu değere sahip olur: null
  • ExceptionHandled Özel durumun olay işleyicisinde RowUpdated işlenip işlenmediğini belirten bir Boole değeri; (varsayılan) ise false , özel durum yeniden oluşturulur ve ASP.NET çalışma zamanına uygulanır
  • KeepInEditMode düzenlenmiş GridView satırına true ayarlanırsa düzenleme modunda kalır; ( false varsayılan), GridView satırı salt okunur moduna geri döner

Bu durumda kodumuzun olup olmadığını Exceptionnulldenetlemesi gerekir. Bu, işlem gerçekleştirilirken bir özel durum oluştuğu anlamına gelir. Böyle bir durumda şunları yapmak isteriz:

  • Etikette ExceptionDetails kullanıcı dostu bir ileti görüntüleme
  • Özel durumun işlendiğini belirtin
  • GridView satırını düzenleme modunda tutma

Aşağıdaki kod bu hedefleri gerçekleştirir:

Protected Sub GridView1_RowUpdated(ByVal sender As Object, _
    ByVal e As System.Web.UI.WebControls.GridViewUpdatedEventArgs) _
    Handles GridView1.RowUpdated
    If e.Exception IsNot Nothing Then
        ExceptionDetails.Visible = True
        ExceptionDetails.Text = "There was a problem updating the product. "
        If e.Exception.InnerException IsNot Nothing Then
            Dim inner As Exception = e.Exception.InnerException
            If TypeOf inner Is System.Data.Common.DbException Then
                ExceptionDetails.Text &= _
                "Our database is currently experiencing problems." & _
                "Please try again later."
            ElseIf TypeOf inner _
             Is System.Data.NoNullAllowedException Then
                ExceptionDetails.Text += _
                    "There are one or more required fields that are missing."
            ElseIf TypeOf inner Is ArgumentException Then
                Dim paramName As String = CType(inner, ArgumentException).ParamName
                ExceptionDetails.Text &= _
                    String.Concat("The ", paramName, " value is illegal.")
            ElseIf TypeOf inner Is ApplicationException Then
                ExceptionDetails.Text += inner.Message
            End If
        End If
        e.ExceptionHandled = True
        e.KeepInEditMode = True
    End If
End Sub

Bu olay işleyicisi, olup olmadığını e.Exceptionnulldenetleyerek başlar. Değilse, ExceptionDetails Label'ın Visible özelliği olarak true ve Text özelliği "Ürün güncelleştirilirken bir sorun oluştu" olarak ayarlanır. Oluşan gerçek özel durumun ayrıntıları nesnenin InnerException özelliğinde e.Exception bulunur. Bu iç özel durum incelenmiştir ve belirli bir türdeyse Label Text özelliğine ExceptionDetails ek, yararlı bir ileti eklenir. Son olarak, ExceptionHandled ve KeepInEditMode özelliklerinin her ikisi de olarak trueayarlanır.

Şekil 9'da ürünün adı atlandığında bu sayfanın ekran görüntüsü gösterilir; Şekil 10'da geçersiz UnitPrice bir değer (-50) girilirken eldeki sonuçlar gösterilir.

ProductName BoundField bir değer içermelidir

Şekil 9: ProductName BoundField Bir Değer İçermelidir (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Negatif BirimFiyat Değerlerine İzin Verilmiyor

Şekil 10: Negatif UnitPrice Değerlere İzin Verilmiyor (Tam boyutlu görüntüyü görüntülemek için tıklayın)

özelliğini trueRowUpdated olarak ayarlayarak e.ExceptionHandled olay işleyicisi özel durumu işlediğini belirtmiştir. Bu nedenle, özel durum ASP.NET çalışma zamanına yayılmaz.

Not

Şekil 9 ve 10'da geçersiz kullanıcı girişi nedeniyle oluşan özel durumları işlemek için düzgün bir yol gösterilmektedir. ancak, ASP.NET sayfasının sınıfın UpdateProduct yöntemini çağırmadan önce kullanıcının girişlerinin geçerli olduğundan emin olması gerektiğinden, bu tür geçersiz girişler iş mantığı katmanına ProductsBLL asla ulaşmaz. Sonraki öğreticimizde, İş Mantığı Katmanı'na gönderilen verilerin iş kurallarına uygun olduğundan emin olmak için arabirimleri düzenleme ve ekleme işlemlerine doğrulama denetimleri eklemeyi öğreneceksiniz. Doğrulama denetimleri yalnızca kullanıcı tarafından sağlanan veriler geçerli olana kadar yöntemin UpdateProduct çağrılmasını önlemekle kalmaz, aynı zamanda veri girişi sorunlarını tanımlamak için daha bilgilendirici bir kullanıcı deneyimi sağlar.

3. Adım: BLL-Level Özel Durumlarını Düzgün bir şekilde İşleme

Veri eklerken, güncelleştirirken veya silerken, Veri Erişim Katmanı verilerle ilgili bir hata karşısında bir özel durum oluşturabilir. Veritabanı çevrimdışı olabilir, gerekli bir veritabanı tablosu sütununda belirtilen bir değer olmayabilir veya tablo düzeyi kısıtlaması ihlal edilmiş olabilir. İş Mantığı Katmanı, verilerle ilgili özel durumlara ek olarak, iş kurallarının ne zaman ihlal edildiğini belirtmek için özel durumları kullanabilir. Örneğin İş Mantığı Katmanı Oluşturma öğreticisinde, özgün UpdateProduct aşırı yüklemeye bir iş kuralı denetimi ekledik. Özellikle, kullanıcı bir ürünü sonlandırıldı olarak işaretliyorsa, ürünün tedarikçi tarafından sağlanan tek ürün olmamasını gerekli kıldık. Bu koşul ihlal edildiyse, bir ApplicationException oluşturuldu.

UpdateProduct Bu öğreticide oluşturulan aşırı yükleme için, alanın özgün UnitPrice değerin iki katından UnitPrice fazla olan yeni bir değere ayarlanmasını engelleyen bir iş kuralı ekleyelim. Bunu yapmak için aşırı yüklemeyi bu denetimi gerçekleştirecek ve kural ihlal edilirse bir ApplicationException oluşturacak şekilde ayarlayınUpdateProduct. Güncelleştirilmiş yöntem aşağıdaki gibidir:

<System.ComponentModel.DataObjectMethodAttribute _
    (System.ComponentModel.DataObjectMethodType.Update, True)> _
    Public Function UpdateProduct(ByVal productName As String, _
    ByVal unitPrice As Nullable(Of Decimal), ByVal unitsInStock As Nullable(Of Short), _
    ByVal productID As Integer) As Boolean
    Dim products As Northwind.ProductsDataTable = Adapter.GetProductByProductID(productID)
    If products.Count = 0 Then
        Return False
    End If
    Dim product As Northwind.ProductsRow = products(0)
    If unitPrice.HasValue AndAlso Not product.IsUnitPriceNull() Then
        If unitPrice > product.UnitPrice * 2 Then
            Throw New ApplicationException( _
                "When updating a product price," & _
                " the new price cannot exceed twice the original price.")
        End If
    End If
    product.ProductName = productName
    If Not unitPrice.HasValue Then
        product.SetUnitPriceNull()
    Else
        product.UnitPrice = unitPrice.Value
    End If
    If Not unitsInStock.HasValue Then
        product.SetUnitsInStockNull()
    Else
        product.UnitsInStock = unitsInStock.Value
    End If
    Dim rowsAffected As Integer = Adapter.Update(product)
    Return rowsAffected = 1
End Function

Bu değişiklikle, mevcut fiyatın iki katından fazla olan herhangi bir fiyat güncelleştirmesi bir ApplicationException atılmaya neden olur. DAL'den alınan özel durum gibi, bu BLL yükseltilmiş ApplicationException de GridView'un RowUpdated olay işleyicisinde algılanabilir ve işlenebilir. Aslında, olay işleyicisinin RowUpdated kodu yazıldıkçe bu özel durumu doğru bir şekilde algılar ve 'nin Message özellik değerini görüntülerApplicationException. Şekil 11'de, kullanıcı Chai'nin fiyatını 50,00 TL'ye güncelleştirmeye çalıştığında ekran görüntüsü gösterilir ve bu da geçerli fiyatı olan 19,95 TL'nin iki katından fazladır.

İş Kuralları, bir ürünün fiyatının iki katından daha fazla artışa izin verme

Şekil 11: İş Kuralları, Bir Ürünün Fiyatının İki Katından Fazla Olan Fiyat Artışlarına İzin Verme (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Not

İdeal olarak iş mantığı kurallarımız, yöntem aşırı yüklemelerinin dışında UpdateProduct ve ortak bir yöntemde yeniden düzenlenmiş olacaktır. Bu, okuyucu için bir alıştırma olarak bırakılır.

Özet

Ekleme, güncelleştirme ve silme işlemleri sırasında hem veri Web denetimi hem de ObjectDataSource gerçek işlemi ön ve son düzey olayları tetikledi. Bu öğreticide ve önceki öğreticide gördüğümüz gibi, düzenlenebilir bir GridView ile çalışırken GridView'un RowUpdating olayı tetiklenir ve ardından ObjectDataSource'un Updating olayı gelir ve bu noktada ObjectDataSource'un temel nesnesine güncelleştirme komutu yapılır. İşlem tamamlandıktan sonra ObjectDataSource'un Updated olayı ve ardından GridView RowUpdated olayı tetiklenir.

Giriş parametrelerini özelleştirmek veya işlemin sonuçlarını incelemek ve yanıtlamak için son düzey olaylar için ön düzey olaylar için olay işleyicileri oluşturabiliriz. Son düzey olay işleyicileri en yaygın olarak işlem sırasında bir özel durumun oluşup oluşmadığını algılamak için kullanılır. Bir özel durum karşısında, bu son düzey olay işleyicileri isteğe bağlı olarak özel durumu kendi başlarına işleyebilir. Bu öğreticide, kolay bir hata iletisi görüntüleyerek böyle bir özel durumun nasıl işleneceğini gördük.

Bir sonraki öğreticide, veri biçimlendirme sorunlarından kaynaklanan özel durumların (negatif UnitPricegirme gibi) olasılığının nasıl az olduğunu göreceğiz. Özellikle, düzenleme ve ekleme arabirimlerine doğrulama denetimleri eklemeyi inceleyeceğiz.

Mutlu Programlama!

Yazar hakkında

Yedi ASP/ASP.NET kitabının yazarı ve 4GuysFromRolla.com kurucusu Scott Mitchell, 1998'den beri Microsoft Web teknolojileriyle çalışmaktadır. Scott bağımsız bir danışman, eğitmen ve yazar olarak çalışmaktadır. Son kitabı Sams Teach Yourself ASP.NET 24 Saat içinde 2.0. Adresine adresinden veya adresinden ulaşabileceğiniz http://ScottOnWriting.NETblogu aracılığıyla ulaşabilirsinizmitchell@4GuysFromRolla.com.

Özel Teşekkürler

Bu öğretici serisi birçok yararlı gözden geçiren tarafından gözden geçirildi. Bu öğreticinin baş gözden geçireni Liz Shulok oldu. Yaklaşan MSDN makalelerimi gözden geçirmek istiyor musunuz? Öyleyse, bana bir satır mitchell@4GuysFromRolla.combırakın.