Ana Sayfadan İçerik Sayfası ile Etkileşim Kurma (VB)

tarafından Scott Mitchell

İçerik Sayfasındaki koddan Ana Sayfanın yöntemlerini çağırmayı, özellikleri ayarlamayı vb. inceler.

Giriş

Son beş öğretici boyunca ana sayfa oluşturma, içerik bölgelerini tanımlama, ASP.NET sayfaları ana sayfaya bağlama ve sayfaya özgü içerik tanımlama adımlarını inceledik. Bir ziyaretçi belirli bir içerik sayfası istediğinde, içerik ve ana sayfaların işaretlemesi çalışma zamanında birleştirilir ve bu da birleşik denetim hiyerarşisinin işlenmesine neden olur. Bu nedenle, ana sayfanın ve içerik sayfalarından birinin etkileşim kurabileceği bir yol gördük: içerik sayfası, ana sayfanın ContentPlaceHolder denetimlerine dönüştürülecek şekilde işaretlemeyi heceler.

Henüz incelememiz gereken, ana sayfanın ve içerik sayfasının program aracılığıyla nasıl etkileşim kurabileceğidir. İçerik sayfası, ana sayfanın ContentPlaceHolder denetimleri için işaretleme tanımlamaya ek olarak, ana sayfasının genel özelliklerine değerler atayabilir ve ortak yöntemlerini çağırabilir. Benzer şekilde, bir ana sayfa içerik sayfalarıyla etkileşimde bulunabilir. Ana ve içerik sayfası arasındaki programlı etkileşim, bildirim temelli işaretlemeleri arasındaki etkileşimden daha az yaygın olsa da, bu tür programlı etkileşime ihtiyaç duyulan birçok senaryo vardır.

Bu öğreticide, bir içerik sayfasının ana sayfasıyla program aracılığıyla nasıl etkileşim kurabileceğini inceleyeceğiz; sonraki öğreticide, ana sayfanın içerik sayfalarıyla benzer şekilde nasıl etkileşim kurabileceğine bakacağız.

İçerik Sayfası ile Ana Sayfası Arasında Programlı Etkileşim Örnekleri

Sayfanın belirli bir bölgesinin sayfa sayfa yapılandırılması gerektiğinde ContentPlaceHolder denetimi kullanırız. Peki sayfaların çoğunluğunun belirli bir çıkış göstermesi gereken ancak az sayıda sayfanın bunu başka bir şey gösterecek şekilde özelleştirmesi gereken durumlara ne olacak? Birden Çok ContentPlaceHolders ve Varsayılan İçerik öğreticisinde incelediğimiz bu tür örneklerden biri, her sayfada bir oturum açma arabirimi görüntülemeyi içerir. Çoğu sayfa bir oturum açma arabirimi içermelidir ancak aşağıdakiler gibi birkaç sayfa için gizlenmelidir: ana oturum açma sayfası (Login.aspx); Hesap Oluştur sayfası ve yalnızca kimliği doğrulanmış kullanıcıların erişebildiği diğer sayfalar. Birden Çok ContentPlaceHolder ve Varsayılan İçerik öğreticisi, ana sayfada contentPlaceHolder için varsayılan içeriğin nasıl tanımlandığını ve ardından varsayılan içeriğin istenmediği sayfalarda bu içeriğin nasıl geçersiz kılındığını gösterdi.

Bir diğer seçenek de ana sayfada oturum açma arabiriminin gösterilip gösterilmeyeceğini veya gizleneceğini belirten bir ortak özellik veya yöntem oluşturmaktır. Örneğin, ana sayfada, değeri ana sayfadaki Oturum açma denetiminin Visible özelliğini ayarlamak için kullanılan adlı ShowLoginUI bir ortak özellik olabilir. Oturum açma kullanıcı arabiriminin gizlenmesi gereken içerik sayfaları daha sonra program aracılığıyla özelliğini olarak FalseayarlayabilirShowLoginUI.

İçerik ve ana sayfa etkileşiminin en yaygın örneği, içerik sayfasında bir eylem tamamlandıktan sonra ana sayfada görüntülenen verilerin yenilenmesi gerektiğinde ortaya çıkabilir. Belirli bir veritabanı tablosundan en son eklenen beş kaydı görüntüleyen bir GridView içeren bir ana sayfayı ve içerik sayfalarından birinin aynı tabloya yeni kayıtlar eklemek için bir arabirim içerdiğini düşünün.

Kullanıcı yeni kayıt eklemek için sayfayı ziyaret ettiğinde, ana sayfada en son eklenen beş kaydın görüntülendiğini görür. Yeni kaydın sütunlarının değerlerini doldurduktan sonra formu gönderir. Ana sayfadaki GridView'un EnableViewState özelliğinin True (varsayılan) olarak ayarlandığını varsayarsak, içeriği görünüm durumundan yeniden yüklenir ve sonuç olarak, veritabanına yeni bir kayıt eklenmiş olsa bile beş aynı kayıt görüntülenir. Bu kullanıcının kafasını karıştırabilir.

Not

GridView'un görünüm durumunu, her geri göndermede temel alınan veri kaynağına yeniden bağlanacak şekilde devre dışı bıraksanız bile, veriler yeni kaydın veritabanına eklendiğinden daha önceki sayfa yaşam döngüsünde GridView'a bağlı olduğundan yeni eklenen kaydı göstermez.

Bunu düzeltmek için, yeni eklenen kaydın ana sayfanın GridView'ında geri göndermede görüntülenmesini sağlamak için GridView'a yeni kayıt veritabanına eklendikten sonra veri kaynağına yeniden bağlanmasını bildirmeliyiz. Yeni kaydı ekleme arabirimi (ve olay işleyicileri) içerik sayfasında olduğundan ancak yenilenmesi gereken GridView ana sayfada olduğundan bu, içerik ve ana sayfalar arasında etkileşim gerektirir.

ana sayfanın görüntüsünü içerik sayfasındaki bir olay işleyicisinden yenilemek, içerik ve ana sayfa etkileşimi için en yaygın gereksinimlerden biri olduğundan, bu konuyu daha ayrıntılı inceleyelim. Bu öğreticinin indirmesi, web sitesinin App_Data klasöründe adlı NORTHWIND.MDF bir Microsoft SQL Server 2005 Express Sürüm veritabanı içerir. Northwind veritabanı, northwind Traders adlı kurgusal bir şirketin ürün, çalışan ve satış bilgilerini depolar.

1. Adım, ana sayfada GridView'da en son eklenen beş ürünün görüntülenmesinde yol gösterir. 2. Adım, yeni ürünler eklemek için bir içerik sayfası oluşturur. 3. adım, ana sayfada genel özelliklerin ve yöntemlerin nasıl oluşturulduğuna bakar ve 4. Adım, içerik sayfasından bu özellikler ve yöntemlerle program aracılığıyla nasıl arabirim oluşturulacağını gösterir.

Not

Bu öğretici, ASP.NET'daki verilerle çalışmanın ayrıntılarını araştırmaz. Ana sayfayı verileri görüntüleyecek şekilde ayarlama adımları ve veri eklemeye yönelik içerik sayfası tamamlanmış ancak daha da karmaşıktır. SqlDataSource ve GridView denetimlerini kullanarak veri görüntüleme ve eklemeye daha ayrıntılı bir bakış için, bu öğreticinin sonundaki Diğer Okumalar bölümündeki kaynaklara bakın.

1. Adım: Ana Sayfada En Son Eklenen Beş Ürünü Görüntüleme

Site.master ana sayfasını açın ve öğesine bir Label ve GridView denetimi leftContent<div>ekleyin. Label'ın Text özelliğini temizleyin, özelliğini olarak Falseve ID özelliğini GridMessageolarak ayarlayınEnableViewState; GridView'un ID özelliğini olarak RecentProductsayarlayın. Ardından, Tasarım Aracı GridView'un akıllı etiketini genişletin ve yeni bir veri kaynağına bağlamayı seçin. Bu işlem Veri Kaynağı Yapılandırma sihirbazını başlatır. Klasördeki App_Data Northwind veritabanı bir Microsoft SQL Server veritabanı olduğundan, öğesini seçerek bir SqlDataSource oluşturmayı seçin (bkz. Şekil 1); SqlDataSource adını verinRecentProductsDataSource.

GridView'u RecentProductsDataSource Adlı Bir SqlDataSource Denetimine Bağlama

Şekil 01: GridView'ı Adlı RecentProductsDataSource SqlDataSource Denetimine Bağlama (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Sonraki adım, hangi veritabanına bağlanılacağını belirtmemizi ister. Açılan listeden NORTHWIND.MDF veritabanı dosyasını seçin ve İleri'ye tıklayın. Bu veritabanını ilk kez kullandığımız için sihirbaz, bağlantı dizesi içinde Web.configdepolamayı teklif edecektir. adını NorthwindConnectionStringkullanarak bağlantı dizesi depolamasını sağlayın.

Northwind Veritabanı'na bağlanma

Şekil 02: Northwind Veritabanı'na bağlanma (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Veri Kaynağını Yapılandırma sihirbazı, verileri almak için kullanılan sorguyu belirtebileceğimiz iki araç sağlar:

  • Özel bir SQL deyimi veya saklı yordam belirterek veya
  • Bir tablo veya görünüm seçip döndürülecek sütunları belirterek

Yalnızca en son eklenen beş ürünü döndürmek istediğimiz için özel bir SQL deyimi belirtmemiz gerekir. Aşağıdaki SELECT sorguyu kullanın:

SELECT TOP 5 ProductName, UnitPrice FROM Products ORDER BY ProductID DESC

anahtar TOP 5 sözcüğü sorgudan yalnızca ilk beş kaydı döndürür. Tablonun Products birincil anahtarı ProductIDolan sütunu, tabloya eklenen her yeni ürünün önceki girdiden daha büyük bir değere sahip olmasını sağlayan bir IDENTITY sütundur. Bu nedenle, sonuçları ProductID azalan düzende sıralamak, en son oluşturulanlarla başlayan ürünleri döndürür.

En Son Eklenen Beş Ürünü İade

Şekil 03: En Son Eklenen Beş Ürünü Döndürme (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Sihirbazı tamamladıktan sonra Visual Studio, GridView için veritabanından döndürülen ve UnitPrice alanlarını görüntülemek ProductName üzere iki BoundField oluşturur. Bu noktada ana sayfanızın bildirim temelli işaretlemesi aşağıdakine benzer bir işaretleme içermelidir:

<asp:Label ID="GridMessage" runat="server" EnableViewState="false"></asp:Label> 
<asp:GridView ID="RecentProducts" runat="server" AutoGenerateColumns="False" 
 DataSourceID="RecentProductsDataSource">
 <Columns> 
 <asp:BoundField DataField="ProductName" HeaderText="ProductName" 
 SortExpression="ProductName" /> 
 <asp:BoundField DataField="UnitPrice" HeaderText="UnitPrice" 
 SortExpression="UnitPrice" /> 
 </Columns> 
</asp:GridView> 
<asp:SqlDataSource ID="RecentProductsDataSource" runat="server" 
 ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" 
 SelectCommand="SELECT TOP 5 ProductName, UnitPrice FROM Products ORDER BY ProductID DESC"> 
</asp:SqlDataSource>

Gördüğünüz gibi, işaretleme şunları içerir: Label Web denetimi (GridMessage); iki BoundField içeren GridView RecentProductsve en son eklenen beş ürünü döndüren bir SqlDataSource denetimi.

Bu GridView oluşturulduktan ve SqlDataSource denetimi yapılandırıldığında, web sitesini bir tarayıcı üzerinden ziyaret edin. Şekil 4'te gösterildiği gibi, sol alt köşede en son eklenen beş ürünü listeleyen bir kılavuz görürsünüz.

GridView en son eklenen beş ürünü görüntüler

Şekil 04: GridView En Son Eklenen Beş Ürünü Görüntüler (tam boyutlu görüntüyü görüntülemek için tıklayın)

Not

GridView görünümünü temizlemekte çekinmeyin. Bazı öneriler, görüntülenen UnitPrice değeri para birimi olarak biçimlendirmeyi ve kılavuzun görünümünü geliştirmek için arka plan renklerini ve yazı tiplerini kullanmayı içerir.

2. Adım: Yeni Ürünler Eklemek için İçerik Sayfası Oluşturma

Sonraki görevimiz, kullanıcının tabloya yeni ürün Products ekleyebileceği bir içerik sayfası oluşturmaktır. adlı AddProduct.aspxklasöre Admin yeni bir içerik sayfası ekleyin ve bunu ana sayfaya Site.master bağlayabilirsiniz. Şekil 5'te, bu sayfa web sitesine eklendikten sonra Çözüm Gezgini gösterilmektedir.

Yönetici Klasörüne Yeni ASP.NET Sayfası Ekleme

Şekil 05: Klasöre Admin Yeni ASP.NET Sayfası Ekleme (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Ana Sayfadaki Başlık, Meta Etiketler ve Diğer HTML Üst Bilgilerini Belirtme öğreticisinde, açıkça ayarlanmadıysa sayfanın başlığını oluşturan adlı BasePage özel bir temel sayfa sınıfı oluşturduğumuza dikkat edin. Sayfanın arka planda kod sınıfına AddProduct.aspx gidin ve öğesinden BasePage türetilmiş olmasını sağlayın (öğesinden System.Web.UI.Pagedeğil).

Son olarak, dosyayı bu ders için bir girdi içerecek şekilde güncelleştirin Web.sitemap . Denetim Kimliği Adlandırma Sorunları dersinin altına <siteMapNode> aşağıdaki işaretlemeyi ekleyin:

<siteMapNode url="~/Admin/AddProduct.aspx" title="Content to Master Page Interaction" />

Şekil 6'da gösterildiği gibi, bu <siteMapNode> öğenin eklenmesi Dersler listesine yansıtılır.

öğesine AddProduct.aspxgeri dönün. ContentPlaceHolder'ın İçerik denetimine MainContent bir DetailsView denetimi ekleyin ve olarak adlandırın NewProduct. DetailsView'ı adlı NewProductDataSourceyeni bir SqlDataSource denetimine bağlayın. 1. Adımdaki SqlDataSource'ta olduğu gibi, sihirbazı Northwind veritabanını kullanacak şekilde yapılandırın ve özel bir SQL deyimi belirtmeyi seçin. Veritabanına öğe eklemek için DetailsView kullanılacağından, hem deyimini SELECTINSERT hem de deyimini belirtmemiz gerekir. Aşağıdaki SELECT sorguyu kullanın:

SELECT ProductName, UnitPrice FROM Products

Ardından INSERT sekmesinde aşağıdaki INSERT deyimi ekleyin:

INSERT INTO Products(ProductName, UnitPrice) VALUES(@ProductName, @UnitPrice)

Sihirbazı tamamladıktan sonra DetailsView'ın akıllı etiketine gidin ve "Eklemeyi Etkinleştir" onay kutusunu işaretleyin. Bu, özelliği True olarak ayarlanmış bir CommandField'i DetailsView'a ShowInsertButton ekler. Bu DetailsView yalnızca veri eklemek için kullanılacağından, DetailsView özelliğini DefaultMode olarak Insertayarlayın.

İşte bu kadar! Şimdi bu sayfayı test edelim. Tarayıcı üzerinden ziyaret edin AddProduct.aspx , bir ad ve fiyat girin (bkz. Şekil 6).

Veritabanına Yeni Ürün Ekleme

Şekil 06: Veritabanına Yeni Ürün Ekleme (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Yeni ürününüzün adını ve fiyatını yazdıktan sonra Ekle düğmesine tıklayın. Bu, formun geri göndermesine neden olur. Geri göndermede, SqlDataSource denetiminin INSERT deyimi yürütülür; iki parametresi DetailsView'un iki TextBox denetiminde kullanıcı tarafından girilen değerlerle doldurulur. Ne yazık ki eklemenin gerçekleştiğine dair görsel bir geri bildirim yoktur. Yeni bir kaydın eklendiğini onaylayan bir iletinin görüntülenmesi iyi olur. Bunu okuyucu için bir alıştırma olarak bırakıyorum. Ayrıca, DetailsView'dan yeni bir kayıt ekledikten sonra ana sayfadaki GridView yine öncekiyle aynı beş kaydı gösterir; yeni eklenen kaydı içermez. Önümüzdeki adımlarda bunu nasıl düzeltebileceğimizi inceleyeceğiz.

Not

Ekleme işleminin başarılı olduğuna ilişkin görsel geri bildirim eklemenin yanı sıra DetailsView'un ekleme arabirimini doğrulamayı içerecek şekilde güncelleştirmenizi de öneririz. Şu anda doğrulama yoktur. Kullanıcı alan için "Çok pahalı" gibi geçersiz bir değer girerse, sistem bu dizeyi UnitPrice ondalık sayıya dönüştürmeyi denediğinde geri göndermede bir özel durum oluşturulur. Ekleme arabirimini özelleştirme hakkında daha fazla bilgi için Verilerle Çalışma öğreticisiserimdeki Veri Değiştirme Arabirimini Özelleştirme öğreticisine bakın.

3. Adım: Ana Sayfada Genel Özellikler ve Yöntemler Oluşturma

1. Adımda, ana sayfadaki GridView'un üzerine adlı GridMessage bir Etiket Web denetimi ekledik. Bu Etiket isteğe bağlı olarak bir ileti görüntülemeye yöneliktir. Örneğin, tabloya Products yeni bir kayıt ekledikten sonra şu iletiyi göstermek isteyebiliriz: "ProductName veritabanına eklendi." Ana sayfada bu Etiketin metnini sabit kodlamak yerine, iletinin içerik sayfası tarafından özelleştirilebilir olmasını isteyebiliriz.

Etiket denetimi ana sayfada korumalı üye değişkeni olarak uygulandığından doğrudan içerik sayfalarından erişilemez. İçerik sayfasından (veya ana sayfadaki herhangi bir Web denetiminden) bir ana sayfadaki Etiket ile çalışmak için, ana sayfada Web denetimini kullanıma sunan veya özelliklerinden birine erişilebilen bir proxy görevi gören bir ortak özellik oluşturmamız gerekir. Label özelliğini kullanıma açmak için ana sayfanın arka kod sınıfına aşağıdaki söz dizimini Text ekleyin:

Public Property GridMessageText() As String 
 Get
 Return GridMessage.Text 
 End Get 
 Set(ByVal Value As String) 
 GridMessage.Text = Value 
 End Set 
End Property

bir içerik sayfasından Products tabloya yeni bir kayıt eklendiğinde, ana sayfadaki RecentProducts GridView'un temel alınan veri kaynağına yeniden bağlanması gerekir. GridView'u yeniden bağlamak için yöntemini çağırın DataBind . Ana sayfadaki GridView içerik sayfaları için program aracılığıyla erişilebilir olmadığından, ana sayfada çağrıldığında verileri GridView'a yeniden bağlayan bir genel yöntem oluşturmamız gerekir. Ana sayfanın arka planda kod sınıfına aşağıdaki yöntemi ekleyin:

Public Sub RefreshRecentProductsGrid() 
 RecentProducts.DataBind()
End Sub

GridMessageText Özellik ve RefreshRecentProductsGrid yöntem hazır durumdayken, herhangi bir içerik sayfası Label Text özelliğinin değerini GridMessage program aracılığıyla ayarlayabilir veya okuyabilir ya da verileri GridView'a yeniden birleştirebilirRecentProducts. 4. Adım, bir içerik sayfasından ana sayfanın genel özelliklerine ve yöntemlerine erişmeyi inceler.

Not

Ana sayfanın özelliklerini ve yöntemlerini olarak Publicişaretlemeyi unutmayın. Bu özellikleri ve yöntemleri olarak Publicaçıkça belirtirseniz, içerik sayfasından bunlara erişilemez.

4. Adım: İçerik Sayfasından Ana Sayfanın Genel Üyelerini Çağırma

Artık ana sayfa gerekli genel özelliklere ve yöntemlere sahip olduğuna göre, içerik sayfasından bu özellikleri ve yöntemleri çağırmaya AddProduct.aspx hazırız. Özellikle, yeni ürün veritabanına eklendikten sonra ana sayfanın GridMessageText özelliğini ayarlamamız ve yöntemini çağırmamız RefreshRecentProductsGrid gerekir. Tüm ASP.NET verileri Web denetimleri, çeşitli görevleri tamamlamadan hemen önce ve sonra olayları tetikler ve bu da sayfa geliştiricilerinin görevden önce veya sonra programlı eylem gerçekleştirmesini kolaylaştırır. Örneğin, son kullanıcı DetailsView'un Ekle düğmesine tıkladığında, geri göndermede DetailsView ekleme iş akışına başlamadan önce olayını tetikler ItemInserting . Ardından kaydı veritabanına ekler. Bundan sonra DetailsView olayı tetikler ItemInserted . Bu nedenle, yeni ürün eklendikten sonra ana sayfayla çalışmak için DetailsView'ın ItemInserted olayı için bir olay işleyicisi oluşturun.

İçerik sayfasının ana sayfasıyla program aracılığıyla arabirim oluşturmanın iki yolu vardır:

  • Ana sayfaya Page.Master gevşek bir şekilde yazılan başvuruyu döndüren özelliğini kullanarak veya
  • Bir yönerge aracılığıyla @MasterType sayfanın ana sayfa türünü veya dosya yolunu belirtin; bu, adlı Mastersayfaya otomatik olarak kesin olarak belirlenmiş bir özellik ekler.

Şimdi her iki yaklaşımı da inceleyelim.

Gevşek Türe SahipPage.MasterÖzelliği Kullanma

Tüm ASP.NET web sayfaları, ad alanında bulunan sınıfından System.Web.UI türetilmelidirPage. sınıfı, Page sayfanın ana sayfasına başvuru döndüren bir özellik içerirMaster. Sayfanın ana sayfası Master yoksa döndürür Nothing.

özelliği, Master tüm ana sayfaların türetildiği temel tür olan türünde MasterPage (ad alanında da bulunur System.Web.UI ) bir nesnesi döndürür. Bu nedenle, web sitemizin ana sayfasında tanımlanan genel özellikleri veya yöntemleri kullanmak için özelliğinden Master döndürülen nesneyi uygun türe atamamız MasterPage gerekir. Ana sayfa dosyamızı Site.masteradlandırdığımız için arka planda kod sınıfı olarak adlandırılmıştır Site. Bu nedenle, aşağıdaki kod özelliğini sınıfın Site bir örneğine yayınlarPage.Master.

' Cast the loosely-typed Page.Master property and then set the GridMessageText property 
Dim myMasterPage As Site = CType(Page.Master, Site)

Artık gevşek türe Page.Master sahip özelliği Site türüne dönüştürdüğünüze göre, Site'ye özgü özelliklere ve yöntemlere başvurabiliriz. Şekil 7'de gösterildiği gibi, ortak özellik GridMessageText IntelliSense açılan listesinde görünür.

IntelliSense, Ana Sayfamızın Genel Özelliklerini ve Yöntemlerini Gösterir

Şekil 07: IntelliSense Ana Sayfamızın Genel Özelliklerini ve Yöntemlerini Gösterir (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Not

Ana sayfa dosyanızı MasterPage.master adlandırdıysanız, ana sayfanın arka planda kod adı olur MasterPage. Bu, türünden System.Web.UI.MasterPage sınıfınıza MasterPage tür türe dönüştürme sırasında belirsiz koda yol açabilir. Kısacası, Web Sitesi Projesi modelini kullanırken biraz karmaşık olabilecek türe tam olarak uygun olmanız gerekir. Benim önerim, ana sayfanızı oluşturduğunuzda ana sayfaya ana sayfaya kesin olarak yazılan bir başvurunun dışında MasterPage.master veya daha iyi bir ad vermenizi sağlamaktır.

Yönergesi ile@MasterTypeStrongly-Typed Başvurusu Oluşturma

Yakından bakarsanız, ASP.NET sayfasının arka planda kod sınıfının kısmi bir sınıf olduğunu görebilirsiniz (sınıf tanımındaki anahtar sözcüğüne dikkat edin Partial ). Kısmi sınıflar C# ve Visual Basic with.NET Framework 2.0'da tanıtıldı ve kısaca bir sınıf üyelerinin birden çok dosyada tanımlanmasını sağlar. Örneğin arka planda kod sınıfı dosyası AddProduct.aspx.vb, sayfa geliştiricisi olarak oluşturduğumuz kodu içerir. Kodumuza ek olarak, ASP.NET altyapısı, bildirim temelli işaretlemeyi sayfanın sınıf hiyerarşisine çeviren özellikleri ve olay işleyicilerini içeren ayrı bir sınıf dosyasını otomatik olarak oluşturur.

bir ASP.NET sayfası ziyaret edilirken gerçekleşen otomatik kod oluşturma, oldukça ilginç ve kullanışlı bazı olasılıkların önünü açar. Ana sayfalar söz konusu olduğunda, ASP.NET altyapısına içerik sayfamız tarafından hangi ana sayfanın kullanıldığını söylersek, bizim için kesin olarak belirlenmiş Master bir özellik oluşturur.

@MasterType İçerik sayfasının ana sayfa türünün ASP.NET altyapısını bilgilendirmek için yönergesini kullanın. yönergesi @MasterType , ana sayfanın tür adını veya dosya yolunu kabul edebilir. Sayfanın ana sayfası olarak kullanacağını AddProduct.aspxSite.master belirtmek için aşağıdaki yönergeyi öğesinin en üstüne AddProduct.aspxekleyin:

<%@ MasterType VirtualPath="~/Site.master" %>

Bu yönerge, ASP.NET altyapısına adlı Masterbir özellik aracılığıyla ana sayfaya kesin olarak türlenmiş bir başvuru eklemesini sağlar. yönergesi @MasterType kullanıldığında, ana sayfanın genel özelliklerini ve yöntemlerini herhangi bir atama olmadan doğrudan özelliği aracılığıyla Master çağırabilirizSite.master.

Not

Yönergesini @MasterType atlarsanız, söz dizimi Page.Master ve Master aynı şeyi döndürürseniz: sayfanın ana sayfasına gevşek türemiş bir nesne. yönergesini @MasterTypeMaster eklerseniz, belirtilen ana sayfaya kesin olarak belirtilmiş bir başvuru döndürür. Page.Masterancak, yine de gevşek türde bir başvuru döndürür. Bu durumun nedenini ve yönerge dahil edildiğinde @MasterType özelliğin Master nasıl yapıldığını daha ayrıntılı bir şekilde görmek için ASP.NET 2.0'da K. Scott Allen'ın blog girdisine @MasterTypebakın.

Yeni Ürün Ekledikten Sonra Ana Sayfayı Güncelleştirme

Artık bir içerik sayfasından ana sayfanın genel özelliklerini ve yöntemlerini çağırmayı bildiğimize göre, yeni bir ürün eklendikten sonra ana sayfanın yenilenmesi için sayfayı güncelleştirmeye AddProduct.aspx hazırız. 4. Adımın başında, yeni ürün veritabanına eklendikten hemen sonra yürütülen DetailsView denetiminin ItemInserting olayı için bir olay işleyicisi oluşturduk. Bu olay işleyicisine aşağıdaki kodu ekleyin:

Protected Sub NewProduct_ItemInserted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DetailsViewInsertedEventArgs) Handles NewProduct.ItemInserted
 ' Cast the loosely-typed Page.Master property and then set the GridMessageText property 
 Dim myMasterPage As Site = CType(Page.Master, Site) 
 myMasterPage.GridMessageText = String.Format("{0} added to grid...", e.Values("ProductName"))
 ' Use the strongly-typed Master property 
 Master.RefreshRecentProductsGrid()
End Sub

Yukarıdaki kod hem gevşek türe sahip Page.Master özelliği hem de kesin olarak türü belirlenmiş Master özelliği kullanır. Özelliğin GridMessageText "ProductName , kılavuza eklendi..." olarak ayarlandığını unutmayın Yeni eklenen ürünün değerlerine koleksiyon üzerinden e.Values erişilebilir; gördüğünüz gibi, yeni eklenen ProductName değere aracılığıyla e.Values("ProductName")erişilir.

Şekil 8'de AddProduct.aspx , veritabanına yeni bir ürün (Scott's Soda) eklendikten hemen sonra sayfa gösterilmektedir. Yeni eklenen ürün adının ana sayfanın Etiketinde not edildiğini ve GridView'un ürünü ve fiyatını içerecek şekilde yenilendiğini unutmayın.

Ana Sayfanın Etiketi ve GridView Just-Added Ürününü Gösterir

Şekil 08: Ana Sayfanın Etiketi ve GridView Just-Added Ürününü Gösterir (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Özet

İdeal olarak, ana sayfa ve içerik sayfaları birbirinden tamamen ayrıdır ve etkileşim düzeyi gerektirmez. Ana sayfalar ve içerik sayfaları bu amaç göz önünde bulundurularak tasarlanmalıdır, ancak bir içerik sayfasının ana sayfasıyla arabirim oluşturması gereken bir dizi yaygın senaryo vardır. En yaygın nedenlerden biri, içerik sayfasında gerçekleştirilen bazı eylemlere göre ana sayfa görünümünün belirli bir bölümünü güncelleştirmeye dayanır.

İyi haber, bir içerik sayfasının ana sayfasıyla program aracılığıyla etkileşim kurmasının nispeten kolay olmasıdır. Başlangıç olarak, ana sayfada bir içerik sayfası tarafından çağrılması gereken işlevselliği kapsülleyen genel özellikler veya yöntemler oluşturun. Ardından, içerik sayfasında, gevşek yazılan Page.Master özellik aracılığıyla ana sayfanın özelliklerine ve yöntemlerine erişin veya ana sayfaya kesin olarak türlenmiş bir başvuru oluşturmak için yönergesini kullanın @MasterType .

Sonraki öğreticide, ana sayfanın içerik sayfalarından biriyle program aracılığıyla nasıl etkileşim kuracaklarını inceleyeceğiz.

Mutlu Programlama!

Daha Fazla Bilgi

Bu öğreticide ele alınan konular hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın:

Yazar hakkında

Birden çok 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 3.5 in 24 Hours(24 Saatte 3.5) kitabıdır. Scott'a adresinden mitchell@4GuysFromRolla.com veya adresinden blogundan http://ScottOnWriting.NETulaşabilirsiniz.

Ö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 Zack Jones oldu. Yaklaşan MSDN makalelerimi gözden geçirmek istiyor musunuz? Öyleyse, bana bir satır bırakın mitchell@4GuysFromRolla.com