Aracılığıyla paylaş


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

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ölgeleri 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ürme yapmak için işaretlemeyi heceler.

Henüz incelemediğimiz şey, ana sayfanın ve içerik sayfasının program aracılığıyla nasıl etkileşim kurabileceğidir. Bir iç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şime geçebilir. 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şimin gerekli olduğu 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 çıktı yaymaya ihtiyacı olan ancak az sayıda sayfanın başka bir şey göstermek için özelleştirmesi gereken durumlar ne olacak? Birden Çok ContentPlaceHolders ve Varsayılan İçerik öğreticisinde incelediğimiz bu tür bir örnek, her sayfada bir oturum açma arabirimi görüntülemeyi içerir. Sayfaların çoğu 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 tarafından erişilebilen diğer sayfalar. Birden Çok ContentPlaceHolder ve Varsayılan İçerik öğreticisi, ana sayfada bir ContentPlaceHolder için varsayılan içeriğin nasıl tanımlanacağı ve ardından varsayılan içeriğin istenmediği sayfalarda nasıl geçersiz kılınacağı gösterildi.

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, ana sayfadaki Oturum açma denetiminin özelliğini ayarlamak Visible için değeri kullanılan adlı ShowLoginUI bir ortak özellik olabilir. Oturum açma kullanıcı arabiriminin gizlenmesi gereken içerik sayfaları, program aracılığıyla özelliğini olarak falseayarlayabilirShowLoginUI.

Belki de en yaygın içerik ve ana sayfa etkileşimi örneği, ana sayfada görüntülenen verilerin içerik sayfasında bir eylem tamamlandıktan sonra yenilenmesi gerektiğinde ortaya çıkar. Belirli bir veritabanı tablosundan en son eklenen beş kaydı görüntüleyen bir GridView içeren bir ana sayfa düşünün 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 bunun sonucunda 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ğlanması için 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 Geri göndermede GridView'da 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ı, kurgusal bir şirket olan Northwind Traders için ürün, çalışan ve satış bilgilerini depolar.

1. Adım, ana sayfada GridView'da en son eklenen beş ürünü görüntüleme işleminde 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 verilerle çalışma ayrıntılarını ele almaz. Ana sayfayı verileri görüntüleyecek şekilde ayarlama adımları ve veri eklemeye yönelik içerik sayfası tamamlanmış, ancak kısadır. Verileri görüntülemeye ve eklemeye ve SqlDataSource ve GridView denetimlerini kullanmaya 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

Ana sayfayı Site.master açın ve öğesine bir Etiket ve GridView denetimi leftContent <div>ekleyin. Label'ın Text özelliğini temizleyin, özelliğini false ID olarak, EnableViewState özelliğini GridMessageise olarak ayarlayın; GridView'un ID özelliğini olarak RecentProductsayarlayın. Ardından Tasarımcı'dan 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ı verin RecentProductsDataSource.

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 sorgusunu 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ı ProductID, 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ıralayarak en son oluşturulan ürünlerle 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, veritabanından döndürülen ve UnitPrice alanlarını görüntülemek ProductName üzere GridView için 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: Etiket 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, tarayıcı üzerinden web sitesini 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 bir ürün Products ekleyebileceği bir içerik sayfası oluşturmaktır. adlı AddProduct.aspxklasöre Admin yeni bir içerik sayfası ekleyin ve bu sayfayı 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.aspxdönün. ContentPlaceHolder'ın İçerik denetiminde MainContent bir DetailsView denetimi ekleyin ve olarak adlandırın NewProduct. DetailsView'ı adlı NewProductDataSourceyeni bir SqlDataSource denetimine bağlayın. 1. Adım'daki 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 SELECT hem de deyimini INSERT belirtmemiz gerekir. Aşağıdaki SELECT sorguyu kullanın:

SELECT ProductName, UnitPrice FROM Products

Ardından INSERT sekmesinden 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ış şekilde DetailsView'a ShowInsertButton bir CommandField 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 geri bildirim yoktur. Yeni bir kaydın eklendiğini onaylayan bir iletinin görüntülenmesi iyi olur. Bunu okuyucuya alıştırma olarak bırakıyorum. Ayrıca, DetailsView'dan yeni bir kayıt ekledikten sonra ana sayfadaki GridView yine de ö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 bir tür 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önderme sırasında bir özel durum oluşturulur. Ekleme arabirimini özelleştirme hakkında daha fazla bilgi için Verilerle Çalışma öğreticisi serimdeki Veri Değiştirme Arabirimini Özelleştirme öğreticisine bakın.

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

1. Adım'da, 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 Etiket 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, içerik sayfalarından doğrudan 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 ara sunucu olarak hizmet veren bir ortak özellik oluşturmamız gerekir. Label özelliğini kullanıma açmak için ana sayfanın arka planda kod sınıfına aşağıdaki söz dizimini Text ekleyin:

public string GridMessageText 
{ 
    get
    { 
        return GridMessage.Text; 
    } 
    set 
    {
        GridMessage.Text = value; 
    }
}

Tabloya içerik sayfasından Products yeni bir kayıt eklendiğinde, ana sayfadaki RecentProducts GridView'un temel 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 void RefreshRecentProductsGrid() 
{ 
    RecentProducts.DataBind();
}

GridMessageText Özellik ve RefreshRecentProductsGrid yöntem kullanıldığında, herhangi bir içerik sayfası Program aracılığıyla Etiket Text özelliğinin GridMessage değerini ayarlayabilir veya okuyabilir ya da verileri GridView'a RecentProducts yeniden sabitleyebilir. 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 AddProduct.aspx çağırmaya hazırız. Özellikle, ana sayfanın GridMessageText özelliğini ayarlamamız ve yeni ürün veritabanına eklendikten sonra 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'ın 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 yazılan bir başvuru döndüren özelliğini kullanma 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.

Her iki yaklaşımı da inceleyelim.

Gevşek TürlenmişPage.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. Sayfada ana sayfa Master yoksa döndürür null.

özelliği, Master tüm ana sayfaların türetildiği temel tür olan türünde MasterPage bir nesne (ad alanında da bulunur System.Web.UI ) 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ıldı Site. Bu nedenle, aşağıdaki kod özelliğini Site sınıfının bir örneğine yayınlar Page.Master .

// Cast the loosely-typed Page.Master property and then set the GridMessageText property 
Site myMasterPage = Page.Master as Site;

Artık gevşek türe sahip Page.Master özelliği türüne Site dönüştürdük, Siteye ö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 sınıf adı olur MasterPage. Bu, türünden System.Web.UI.MasterPage sınıfınıza MasterPage yayın yaparken belirsiz koda yol açabilir. Kısacası, Web Sitesi Projesi modelini kullanırken biraz karmaşık olabilecek, atama yaptığınız türü tam olarak nitelemeniz gerekir. Önerim, ana sayfanızı oluşturduğunuzda ana sayfaya daha farklı MasterPage.master bir ad verin veya daha da iyisi ana sayfaya kesin olarak yazılan bir başvuru oluşturun.

Yönergesi ile@MasterTypeKesin TüreMiş Bir Başvuru 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üğü not edin partial ). Kısmi sınıflar C# ve Visual Basic with.NET Framework 2.0'da kullanıma sunulmuştur ve özetle bir sınıfın üyelerinin birden çok dosyada tanımlanmasına olanak tanır. Arka planda kod sınıfı dosyası ( AddProduct.aspx.csörneğin, ) 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ı 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.aspx Site.master belirtmek için, öğesinin en üstüne AddProduct.aspxaşağıdaki yönergeyi ekleyin:

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

Bu yönerge, ASP.NET altyapısına adlı Masterbir özellik aracılığıyla ana sayfaya kesin olarak belirlenmiş 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ür: sayfanın ana sayfasına gevşek yazılan bir nesne. yönergesini @MasterType Master 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 neden böyle olduğuna ve yönerge dahil edildiğinde özelliğin Master nasıl oluşturulur olduğuna daha ayrıntılı bir bakış için bkz. K. Scott Allen'ın ASP.NET 2.0'daki blog girdisi@MasterType.@MasterType

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 ekledikten sonra ana sayfanın yenilenmesi için sayfayı güncelleştirmeye AddProduct.aspx hazırız. 4. Adımın başında DetailsView denetiminin ItemInserting olayı için yeni ürün veritabanına eklendikten hemen sonra yürütülen bir olay işleyicisi oluşturduk. Bu olay işleyicisine aşağıdaki kodu ekleyin:

protected void NewProduct_ItemInserted(object sender, DetailsViewInsertedEventArgs e) 
{ 
    // Cast the loosely-typed Page.Master property and then set the GridMessageText property 
    Site myMasterPage = Page.Master as Site; 
    myMasterPage.GridMessageText = string.Format("{0} added to grid...", e.Values["ProductName"]); 
    // Use the strongly-typed Master property 
    Master.RefreshRecentProductsGrid();
}

Yukarıdaki kod hem gevşek türlenmiş Page.Master özelliği hem de kesin olarak türü belirlenmiş Master özelliği kullanır. Özelliğinin 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 Yeni Eklenen Ürünü Gösterir

Şekil 08: Ana Sayfanın Etiketi ve GridView Yeni Eklenen Ürü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, ana sayfanın belirli bir bölümünün güncelleştirilmesiyle ilgili merkezler, içerik sayfasında gerçekleştirilen bazı eylemlere göre görüntülenir.

İyi haber, bir içerik sayfasının program aracılığıyla ana sayfası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, ana sayfanın özelliklerine ve yöntemlerine gevşek yazılan Page.Master özellik aracılığıyla erişin veya ana sayfaya kesin olarak yazılan 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ışır. Son kitabı Sams Teach Yourself ASP.NET 3.5 in 24 Hours. Scott'a adresinden mitchell@4GuysFromRolla.com veya adresinden blogu http://ScottOnWriting.NETaracılığıyla ulaşılabilir.

Ö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