Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
tarafından Scott Mitchell
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 mimarisini kullanarak ASP.NET bir web uygulamasındaki verilerle çalışmak aşağıdaki üç genel adımı içerir:
- İş 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.
- yöntemini çağırın.
- Sonuçları işleme. Veri döndüren bir BLL yöntemi çağrılı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 RowUpdating
koleksiyonuna atamadan önce olayını başlatırUpdateParameters
; RowUpdated
olayı ObjectDataSource işlemi tamamladıktan sonra oluşturulur.
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 tetiklenen olaylara odaklanacağız. Bu son düzey 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 kullanmak 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, ürünleri düzenlenebilir bir GridView'da listeleyen bir sayfa oluşturalım. Bir ürünü güncelleştirirken bir ö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 ProductName
ve UnitPrice
olmak üzere yalnızca iki alanı olan düzenlenebilir bir GridView oluşturduk. Bu, her bir ürün alanı için bir parametre yerine yalnızca üç giriş parametresini (ürünün adı, birim fiyatı ve kimliği) kabul eden sınıfın ProductsBLL
yöntemine ek bir overload 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 vardır: ürünün adı, birim fiyatı, stoktaki birimler ve kimlik. Sınıfına aşağıdaki yöntemi ProductsBLL
ekleyin:
[System.ComponentModel.DataObjectMethodAttribute(
System.ComponentModel.DataObjectMethodType.Update, false)]
public bool UpdateProduct(string productName, decimal? unitPrice, short? unitsInStock,
int productID)
{
Northwind.ProductsDataTable products = Adapter.GetProductByProductID(productID);
if (products.Count == 0)
// no matching record found, return false
return false;
Northwind.ProductsRow product = products[0];
product.ProductName = productName;
if (unitPrice == null) product.SetUnitPriceNull();
else product.UnitPrice = unitPrice.Value;
if (unitsInStock == null) product.SetUnitsInStockNull();
else product.UnitsInStock = unitsInStock.Value;
// Update the product record
int rowsAffected = Adapter.Update(product);
// Return true if precisely one row was updated, otherwise false
return rowsAffected == 1;
}
Bu yöntem tamamlandıktan sonra, bu dört ürün alanını düzenlemeye olanak tanıyan ASP.NET sayfasını oluşturmaya hazırız.
ErrorHandling.aspx
klasöründeki EditInsertDelete
sayfasını açın ve Tasarım Aracı kullanarak sayfaya bir GridView ekleyin. GridView'ı yeni bir ObjectDataSource'a bağlayın, Select()
yöntemini ProductsBLL
sınıfının GetProducts()
yöntemine ve Update()
yöntemini yeni oluşturulan UpdateProduct
aşırı yüklemesine eşleyin.
Ş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 bir GridView'a sahip bir ObjectDataSource oluşturur. ObjectDataSource'un bildirimsel işaretlemesi, OldValuesParameterFormatString
özelliğine original_{0}
değerini atar, bu da istisnaya neden olur çünkü BLL sınıfımız original_productID
adlı bir giriş parametresinin geçirilmesini beklemiyor. Bu ayarı bildirim temelli söz diziminden tamamen kaldırmayı unutmayın (veya varsayılan değer olarak ayarlayın). {0}
Ardından, GridView'da yalnızca ProductName
, , QuantityPerUnit
UnitPrice
ve UnitsInStock
BoundField değerlerini içerecek şekilde aşağı doğru ayrıştırın. Ayrıca, HeaderText
özelliklerinin değiştirilmesi gibi, gerekli gördüğünüz herhangi bir alan düzeyinde biçimlendirmeyi uygulamaktan çekinmeyin.
Önceki öğreticide, UnitPrice
BoundField'ı hem salt okunur modda hem de düzenleme modunda para birimi olarak nasıl biçimlendireceğimizi inceledik. Burada da aynısını yapalım. Bunun, Şekil 2'de gösterildiği gibi BoundField'ın DataFormatString
özelliğini {0:c}
olarak, HtmlEncode
özelliğini false
olarak ve ApplyFormatInEditMode
özelliğini true
olarak ayarlamayı gerektirdiğini hatırlayın.
Ş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 para birimi olarak biçimlendirmek, GridView'un RowUpdating
olayı için para birimi biçimli dizeyi bir değere ayrıştıran bir decimal
olay işleyicisi oluşturulmasını gerektirir.
RowUpdating
olay işleyicisinin, kullanıcının bir UnitPrice
değeri sağladığından emin olmak için kontrol ettiğini de son öğreticide hatırlayın. Ancak, bu kılavuz için kullanıcının fiyatı atlamasına izin verelim.
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
if (e.NewValues["UnitPrice"] != null)
e.NewValues["UnitPrice"] =decimal.Parse(e.NewValues["UnitPrice"].ToString(),
System.Globalization.NumberStyles.Currency);
}
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üzenlenemez. Bunu düzenlemek için BoundFields özelliğini ReadOnly
olarak ayarlamanız yeterlidir true
.
Şekil 3: BoundField Read-Only yapma QuantityPerUnit
(Tam boyutlu görüntüyü 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ı tamamladıktan sonra ErrorHandling.aspx
sayfasının tasarımı, Şekil 4'e benzer görünmelidir.
Şekil 4: Gerekli Bağlı Alanlar dışında kalanları kaldırın ve Düzenlemeyi Etkinleştir seçeneğini işaretleyin (Tam boyutlu görüntüye bakmak için tıklayın)
Bu noktada tüm ürünlerin ProductName
, QuantityPerUnit
, UnitPrice
ve UnitsInStock
alanlarının bir listesi bulunur; ancak yalnızca ProductName
, UnitPrice
ve UnitsInStock
alanları düzenlenebilir.
Şekil 5: Kullanıcılar artık Ürünlerin Adlarını, Fiyatlarını ve Stok Alanlarındaki Birimleri Kolayca Düzenleyebilir (Tam boyutlu görüntüyü görüntülemek için tıklayın)
2. Adım: DAL-Level İstisnalarını Zarifçe Yönetme
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ışsa da, geçersiz değerler girilmesi özel durumla sonuçlanır. Örneğin, sınıftaki ProductName
özelliği belirtmezseniz ve bu özelliğin değeri ProductName
olacak şekilde ayarlanmışsa, bu durum ProductsRow
'ın atılmasına neden olur. Veritabanı çalışmıyorsa, veritabanına bağlanmaya çalışırken TableAdapter tarafından bir AllowDBNull
atılır. Hiçbir işlem yapmadan 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ı localhost
ziyaret 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 ASP.NET ve customErrors ÖğesindeWeb Uygulaması Hata İşleme bölümüne bakın.
Şekil 6'da, değeri belirtmeden bir ürünü güncelleştirmeye çalışırken karşılaşılan ekran gösterilmektedir ProductName
. Bu, üzerinden localhost
geçerken görüntülenen varsayılan ayrıntılı hata raporudur.
Ş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)
Bir uygulamayı test ederken bu tür özel durum ayrıntıları yararlı olsa da, son kullanıcıya özel durum karşısında böyle bir ekran sunmak idealden daha azdır. Son kullanıcı büyük olasılıkla bir NoNullAllowedException
nedir veya neden oluşmuştur bilmiyor. Daha iyi bir yaklaşım, kullanıcıya ürünü güncelleştirmeye çalışırken sorun olduğunu açıklayan daha kullanıcı dostu bir ileti sunmaktır.
İşlemi gerçekleştirirken 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 taşma işlemini 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 özel durum ayrıntılarını Etiket Web denetiminde görüntüleyelim.
ASP.NET sayfasına bir Etiket ekleyerek, ID
özelliğini ExceptionDetails
olacak şekilde ayarlayın ve Text
özelliğini temizleyin. Kullanıcının dikkatini bu mesaja çekmek için CssClass
özelliğini Warning
olarak ayarlayın. Bu, önceki öğreticide Styles.css
dosyasına eklediğimiz bir 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 bir yazı tipinde görüntülenmesine neden olduğunu hatırlayın.
Şekil 7: Sayfaya Etiket Web Denetimi Ekleme (Tam boyutlu görüntüyü 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 Visible
özelliğini false olarak ayarlayınPage_Load
:
protected void Page_Load(object sender, EventArgs e)
{
ExceptionDetails.Visible = false;
}
Bu kodla, ilk sayfa ziyaretinde ve sonraki geri göndermelerde ExceptionDetails
denetimi, Visible
özelliği false
olarak ayarlanacaktır. GridView'un RowUpdated
olay işleyicisinde algıladığımız DAL veya BLL düzeyinde bir özel durum karşısında denetimin ExceptionDetails
Visible
özelliğini true olarak ayarlayacağız. Web denetimi olay işleyicileri, sayfa yaşam döngüsündeki Page_Load
olay işleyicisinden sonra gerçekleştiğinden Etiket görünür hale gelecektir. Ancak, bir sonraki geri göndermede Page_Load
olay işleyicisi Visible
özelliğini tekrar false
olarak geri döndürerek yeniden görünümden gizler.
Uyarı
Alternatif olarak, ExceptionDetails
içindeki Visible
denetimi için Page_Load
özelliğini ayarlama gereğini ortadan kaldırabiliriz, bunun yerine özelliği Visible
false
olarak bildirim temelli söz dizimiyle atayıp görünüm durumunu devre dışı bırakabiliriz (özelliğini EnableViewState
false
olarak ayarlayarak). Bu alternatif yaklaşımı gelecekteki bir öğreticide kullanacağız.
Etiket denetimi eklendikten sonra, sonraki adımımız GridView'un RowUpdated
olayı için olay işleyicisi oluşturmaktır. Tasarımcı'da GridView'ı seçin, Özellikler penceresine gidin ve GridView olaylarını listeleyen şimşek simgesine tıklayın. GridView'in RowUpdating
olayı için zaten bir giriş olmalıdır, çünkü bu öğreticide daha önce bu olay için bir olay işleyicisi oluşturduk.
RowUpdated
olayı için de bir olay işleyicisi oluşturun.
Şekil 8: GridView Olayı için Olay İşleyicisi RowUpdated
Oluşturma
Uyarı
Olay işleyicisini, kod arkası sınıf dosyasının en üstündeki açılır listeleri kullanarak da oluşturabilirsiniz. Soldaki açılır listeden GridView'ı ve sağdaki listeden RowUpdated
olayını 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 void GridView1_RowUpdated(object sender, GridViewUpdatedEventArgs e)
{
}
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 referans; eğer hiç özel durum atılmamışsa, bu özelliğin değerinull
-
ExceptionHandled
Olay işleyicisindeRowUpdated
özel durumun işlenip işlenmediğini gösteren bir boole değeri; eğerfalse
(varsayılan), özel durum yeniden atılır ve ASP.NET çalışma zamanına iletilir -
KeepInEditMode
düzenlenmiş GridView satırınatrue
ayarlanırsa düzenleme modunda kalır; (false
varsayılan), GridView satırı salt okunur moduna geri döner
Kodumuzun, Exception
'nin null
'e eşit olmadığını kontrol etmesi gerekir. Bu, işlemi gerçekleştirirken bir özel durumun ortaya çıktığını gösterir. Böyle bir durum söz konusuysa şunları yapmak istiyoruz:
- Etikette
ExceptionDetails
kullanıcı dostu bir ileti görüntüleme - İstisnanın işlendiğini belirtin
- GridView satırını düzenleme modunda tutma
Aşağıdaki kod bu hedefleri gerçekleştirir:
protected void GridView1_RowUpdated(object sender, GridViewUpdatedEventArgs e)
{
if (e.Exception != null)
{
// Display a user-friendly message
ExceptionDetails.Visible = true;
ExceptionDetails.Text = "There was a problem updating the product. ";
if (e.Exception.InnerException != null)
{
Exception inner = e.Exception.InnerException;
if (inner is System.Data.Common.DbException)
ExceptionDetails.Text +=
"Our database is currently experiencing problems." +
"Please try again later.";
else if (inner is NoNullAllowedException)
ExceptionDetails.Text +=
"There are one or more required fields that are missing.";
else if (inner is ArgumentException)
{
string paramName = ((ArgumentException)inner).ParamName;
ExceptionDetails.Text +=
string.Concat("The ", paramName, " value is illegal.");
}
else if (inner is ApplicationException)
ExceptionDetails.Text += inner.Message;
}
// Indicate that the exception has been handled
e.ExceptionHandled = true;
// Keep the row in edit mode
e.KeepInEditMode = true;
}
}
Bu olay işleyicisi, e.Exception
'in null
olup olmadığını denetleyerek 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 e.Exception
özelliğinde InnerException
bulunur. Bu iç özel durum incelenmiştir ve belirli bir türdeyse Label'ın ExceptionDetails
özelliğine Text
ek, yararlı bir ileti eklenir. Son olarak, ExceptionHandled
ve KeepInEditMode
özelliklerinin her ikisi de olarak true
ayarlanı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.
Şekil 9: ProductName
BoundField Bir Değer İçermelidir (Tam boyutlu görüntüyü görüntülemek için tıklayın)
Şekil 10: Negatif UnitPrice
Değerlere İzin Verilmiyor (Tam boyutlu görüntüyü görüntülemek için tıklayın)
e.ExceptionHandled
özelliğinin true
olarak ayarlanmasıyla, RowUpdated
olay işleyicisi özel durumu işlediğini belirtmiştir. Bu nedenle, özel durum ASP.NET çalışma zamanına yayılmaz.
Uyarı
Ş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. İdealde, ASP.NET sayfası sınıfın ProductsBLL
yöntemini çağırmadan önce kullanıcının girişlerinin geçerli olduğunu kontrol etmeli ve böylece bu tür geçersiz girişler İş Mantığı Katmanı'na UpdateProduct
hiç ulaşmamalıdır. Sonraki öğreticimizde, İş Mantığı Katmanı'na gönderilen verilerin iş kurallarına uygun olduğundan emin olmak için düzenleme ve ekleme arabirimlerine 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 İstisnalarını Zarifçe Yönetme
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ı tablo 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ü durduruldu olarak işaretlediyse, ürünün tedarikçi tarafından sağlanan tek ürün olmamasını zorunlu kıldık. Bu koşul ihlal edildiyse, bir ApplicationException
atılır.
UpdateProduct
Bu öğreticide oluşturulan yük için, UnitPrice
alanının özgün UnitPrice
değerinin iki katını aşan yeni bir değere ayarlanmasını engelleyen bir iş kuralı ekleyelim. Bunu başarmak için, UpdateProduct
aşırı yüklemesini bu denetimi gerçekleştirecek ve kural ihlal edilirse bir ApplicationException
fırlatacak şekilde ayarlayın. Güncelleştirilmiş yöntem şu şekildedir:
public bool UpdateProduct(string productName, decimal? unitPrice, short? unitsInStock,
int productID)
{
Northwind.ProductsDataTable products = Adapter.GetProductByProductID(productID);
if (products.Count == 0)
// no matching record found, return false
return false;
Northwind.ProductsRow product = products[0];
// Make sure the price has not more than doubled
if (unitPrice != null && !product.IsUnitPriceNull())
if (unitPrice > product.UnitPrice * 2)
throw new ApplicationException(
"When updating a product price," +
" the new price cannot exceed twice the original price.");
product.ProductName = productName;
if (unitPrice == null) product.SetUnitPriceNull();
else product.UnitPrice = unitPrice.Value;
if (unitsInStock == null) product.SetUnitsInStockNull();
else product.UnitsInStock = unitsInStock.Value;
// Update the product record
int rowsAffected = Adapter.Update(product);
// Return true if precisely one row was updated, otherwise false
return rowsAffected == 1;
}
Bu değişiklikle, mevcut fiyatın iki katından fazla olan herhangi bir fiyat güncellemesi bir ApplicationException
fırlatılmasına neden olur. DAL'den alınan istisna durumu gibi, bu BLL tarafından yükseltilen ApplicationException
de GridView'un RowUpdated
olay işleyicisinde algılanabilir ve işlenebilir. Aslında, RowUpdated
olay işleyicisinin kodu, yazıldığı şekliyle bu istisnayı doğru algılar ve ApplicationException
'nin Message
özellik değerini görüntüler. Şekil 11'de, kullanıcı Chai fiyatını 50,00 ABD doları olarak 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.
Ş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)
Uyarı
İdeal olarak iş mantığı kurallarımız, UpdateProduct
yöntem aşırı yüklemelerinden ortak bir yönteme yeniden düzenlenecekti. 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 kontrolü hem de ObjectDataSource, gerçek işlemin öncesi ve sonrasında gerçekleşen olayları tetiklemektedir. 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ı tetiklenir ve ardından GridView olayı RowUpdated
gelir.
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, kullanıcı dostu bir hata iletisi görüntüleyerek böyle bir istisnanın nasıl işleneceğini gördük.
Sonraki öğreticide, veri biçimlendirme sorunlarından kaynaklanan istisna olasılığını nasıl azaltacağımızı (örneğin, negatif UnitPrice
girme) 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ışır. Son kitabı Sams Teach Yourself ASP.NET 24 Hours 2.0'dır. Ona adresinden mitchell@4GuysFromRolla.comulaşabilirsiniz.
Özel Teşekkürler
Bu eğitim serisi, birçok yararlı kişi tarafından incelendi. Bu öğreticinin baş gözden geçireni Liz Shulok oldu. Yaklaşan MSDN makalelerimi gözden geçirmek istiyor musunuz? Öyleyse, mitchell@4GuysFromRolla.com'a bir mesaj bırakın.