Malların listesini görüntüler. Hesap verebilirlik geri alınamaz

UI projesini bile etkilemeden, bir etki alanı modeli ve bir depo oluşturabiliriz. Fakat sıkılmadıysanız, kursu değiştireceğiz ve MVC çerçevesini tam güçle kullanmaya başlayacağız. Model ve depoda gerektiği gibi yeni özellikler ekleyeceğiz.

Bu bölümde, depodaki mallarla ilgili bilgileri gösterecek bir denetleyici ve eylem yöntemi oluşturacağız. Şu anda sadece simüle edilmiş depoda veri var, ancak bu soruyu daha sonra çözeceğiz. Ayrıca ilk ayarları da yapacağız. yönlendirme yapılandırmalarıBöylece MVC, oluşturacağımız kontrol cihazına başvuru isteklerinin nasıl gösterileceği bilinmektedir.

Denetçi ekle

SportsStore.Webui projesindeki Denetleyiciler klasörünü sağ tıklatın ve içerik menüsünde Ekle - Denetleyici'yi seçin. Kontrolör Adı ProductController'ı atayın ve şablon seçeneğinin boş kontrol cihazı içerdiğinden emin olun. Visual Studio düzenlemek için bir dosyayı açtığında, otomatik olarak eklenen varsayılan eylem yöntemini silebilirsiniz ve dosyanız 7-6 listeleme gibi görünecektir.

7-6 listeleme: Productontroller'in birincil tanımı
sistemi kullanma; System.Collections.Genic; System.Linq kullanarak; System.Web; System.Web.MVC'yi kullanma; SportsStore.Domain.abstract kullanarak; SportsStore.Domain.Entitions kullanarak; Ad alanı SportsStore.Webui.Controllers (Public Class ProductSontroller: Controller (Özel İProductrepository Repositroller (IProductrepository ProductionTroller) (This.Repository \u003d ProductionTrepository;)))

Dizin Eylem Yöntemini Çıkarma, IProductrepository parametresini kabul eden bir tasarımcı ekliyoruz. Bu, Doktora sınıfının bir örneğini oluştururken, mal deposuna bağımlılık yapmasını sağlayacaktır. Ayrıca SportsStore.Domain ad alanlarını ithal ettik, böylece isimlerini işaret etmeden depoya ve modellere sınıflara erişebiliriz.

7-7 listeleme: Eylem Yöntemi Ekleme
sistemi kullanma; System.Collections.Genic; System.Linq kullanarak; System.Web; System.Web.MVC'yi kullanma; SportsStore.Domain.abstract kullanarak; SportsStore.Domain.Entitions kullanarak; Ad alanı SportsStore.Webui.Controllers (Public Class ProductSontroller: Controller (Halk ProductController; Halk ProductController (Iproductrepository \u003d Productionitory;) public ViewResult List () (Dönüş Görünümü (Repository.Products);) } }

Görünüm yöntemine göre böyle bir arama (isim adını belirlemeden) platforma, bu eylem yöntemi için varsayılan temsili görselleştirmesini söyler. Liste Listesi Ürün Nesnelerini Görüntüleme Yönteminde, model nesnesini kesinlikle yazılmış bir görünümde doldurmak için platform verilerini sağlarız.

Temsil Ekle

Şimdi Liste Eylem Yöntemi için varsayılan bir görünüm eklememiz gerekir. Kod Düzenleyicisindeki Liste yöntemini sağ tıklatın ve Bağlam menüsünde Ekle - Görüntüle'yi seçin. Liste adını atayın ve Şekil 7-5'te gösterildiği gibi kesinlikle yazılan görünümler oluşturan seçeneği kontrol edin.

Şekil 7-5: Liste gösterim ekle

Model sınıf alanında, IEnumerable'ı girin . Bu ismi yazdırmak zorunda kalacaksınız; Etki alanı nesnelerinin aktarımını içermeyen açılır listeden açılmayacaktır.

Gelecekte, görüşlerimizin düzgün bir şekilde görünmesi için temel proje şablonuna dahil olan Standart Razor Düzenini kullanacağız. Bir düzen seçeneğini onay kutusunu işaretleyin, ancak resimde gösterildiği gibi metin kutusunu boş bırakın. Görünüm oluşturmak için Ekle düğmesine tıklayın.

Sunumun verilerini görselleştiririz

Sunumdaki modelin iinumerable olduğunu bilmek 7-8 listede gösterildiği gibi, jiletteki foreach döngüsünü kullanarak bir liste oluşturabiliriz.

7-8 listeleme: List.CSHTML Temsilciliği
@Model IEnumerable. @ (Viewbag.title \u003d "(! Lang: Ürünler"; } !} @Foreach (modelde var) (

@ P.name.

@ p.description.

@ p.price.tostring ("c")

}

Ayrıca sayfanın başlığını da değiştirdik. Razor metni veya @ öğeleri kullanmamız gerekmediğimi unutmayın: Görünüm verilerini görüntülemek için, çünkü vücut kodundaki her satır RAZOR Direktifi ise, HTML öğesinden başlar.

Konsey

Lütfen, Sunucunuzda çalışan kültür ayarlarına göre sayısal değerleri bir para birimi olarak gösteren TOSTRING yöntemini ("C") kullanarak dizgedeki fiyat özelliklerini dönüştürdüğümüzü unutmayın. Örneğin, sunucu en-bize göre yapılandırılmışsa, daha sonra (1002.3) .Tostring ("C"), 1.002.30 $ döndürür, ancak sunucu En-GB olarak yapılandırılırsa, aynı yöntem 1.002.30 £ değerini döndürür. Düğümü ekleyerek sunucunuzun kültür ayarını değiştirebilirsiniz. Web.config dosyası Sonraki bölüm: .

Varsayılan rut dosyasını yapılandırın

Şimdi MVC platformuna site kökü (http: // mysite /) giren isteklerin, ProductSontroller sınıfı listesi eylem yöntemini görüntülemeniz gerektiğini söyleyecek kadar sahibiz. Bunu yapmak için, operatörü, 7-9 listesinde gösterildiği gibi, App_Start / Routeconfig.cs dosyasındaki RegisterRourtes yönteminde düzenleriz.

7-9 listeleme: RIGIT varsayılan ekleyin
sistemi kullanma; System.Collections.Genic; System.Linq kullanarak; System.Web; System.Web.MVC'yi kullanma; System.Web.Ruting kullanarak; Ad alanı SportsStore.Webui (RoutCollection rotaları. Nocollection (rotalar) (rotalar.axd / (* pathinfo) "); rotalar.Maproute (İsim:" Varsayılan ", URL:" (denetleyici) / (eylem) / (ID) ", Varsayılanlar: Yeni (denetleyici \u003d "ürün", eylem \u003d "liste", id \u003d urlparameter.optional));))))

Listede gösterildiği gibi, listede ürün ve dizin üzerinde ev değiştirin. ASP.NET'te Bölüm 13'te detaylı olarak yönlendirme olasılığını açıklıyoruz. Şu anda, bu değişikliğin, tanımladığımız eylem yönteminde varsayılan URL'ye istek göndereceğini bilmek yeterli.

Konsey

Lütfen 7-9 numaralı listede, ürünün denetleyici değerini yükledik ve ürünün adı olan ürün kontrolörü değil. Bu, denetleyici sınıflarının her zaman denetleyiciyi bitirdiği ve Sınıfa erişirken, ismin bu kısmı düşerken, ASP.NET MVC adlandırma şemasının bir parçasıdır.

Uygulamayı çalıştır

Tüm temel bileşenler hazır. Varsayılan URL'yi talep ederken çağrılan eylem yöntemiyle bir denetleyicimiz var. Bu eylem yöntemi, basit test verileri oluşturan depo arayüzümüzün simüle edilmiş uygulamasına dayanır. Test verileri, eylem yöntemiyle bağlandığımız görünüme iletilir ve her ürün için bilgiler içeren basit bir liste oluşturur. Uygulamayı çalıştırırsanız, Şekil 7-6'da gösterilen sonucu göreceksiniz.

Şekil 7-6: Uygulamanın temel işlevselliğini görüyoruz

Bu, ASP.NET MVC platformu için tipik bir gelişme şablonudur. Kurma konusunda oldukça fazla zaman atıyoruz, ancak uygulamanın temel işlevselliğinin geliştirilmesi çok hızlı bir şekilde.

Peki, bu yüzden dünyaya MVC için yeniyim, ama bunun başarılı olmanın çok iyi bir yolu olduğu ve burada çalışmasını sağlamaya çalışıyorum.

Sorun şu şekildedir: SQL-Veritabanımdaki masamdan veri alamıyorum, kayıt sayfamda basit bir açılır formda.

Malzemeyi bir tablo açmak için kodun nerede yerleştirileceği bir fikrimiz yok, yanıtı nerede belirleyebileceğiniz tanımlayıcıları seçin. Yazma ve görünüme nasıl gönderilir?

Modelimiz aşağıdaki gibidir:

Genel Dize Adı (Get; Set;) Public Int User_ID (GET; SET;))

Kamu ActionResult Listuser () (Dönüş Görünümü ();)

Ve benim fikrim:

@Model community.models.users.

2 gün boyunca googlendim ve YouTube'da birkaç video izledim, ama işe yaramaz, bulamıyorum. Lütfen burada bazı bilgiye sahip biri mi? Ve lütfen bana sahip olabileceğim daha fazla soru bulabileceğim iyi ders kitapları ve / veya forumlarla adlandırın.

Hala bu projede şanslı değil.

Bu formda bir form oluştururum, bir db-loop (ienumerable) istiyorum. Ancak mevcut model ienumerable değil. Neredeyse sıkışıp kaldım, bir sürü ders kitabı görünüyordum ve hepsi sadece bir bağlantıyı listeleyim ve ne iki modele ihtiyacım olursa?

İşte kontrol cihazım, listeyi görünüme aktarmanız gerektiğini fark ettim.

Kamu ActionReze Tescili () (Dönüş Görünümü (DB.Users.tolist ());)

Bu listeyi Sunumumda Model IEnumerable olmadan nasıl elde ederim?

@neoistheone, örneğiniz bana çok yardımcı olmadı, veritabanım şöyle açılıyor:

Özel DatabaseSecontext DB \u003d Yeni VeritabanlarıContext ();

ve nasıl yapacağımı bilmiyorum, ancak bağlantıyı açar. Çok fazla saat denedim, sadece aptalca, uzun zamandır uyumadı!

Asp-Classic FYI programını kullanıyorum ve bu, modern dilin ve OOP'nin programlanması hakkındaki bilgimi güncellemek için ilk ciddi girişim.

6 cevap

Modelinize Seçme Listesi ekleyin:

Genel Seç SelectList DropDownList (GET; SET;)

bu koleksiyon için bir sınıf oluşturun:

Kamu sınıfı MyListTable (Genel Dize Anahtarı (Get; Set;) Genel Dize Ekran (GET; SET;))

ve sonra kontrol cihazınızda, verileri MyListTable sınıfından veritabanından indirin:

Var listesi \u003d yeni liste (); Kullanma (SQLConnection C \u003d Yeni SQLConnection (CSTRing) (SQLCommand Cmd \u003d Yeni SQLCommand ("Anahtar Alanı, Tablodan DisplayField Select") (Kullanarak (SQLDATAREADER RDR \u003d cmd.executeReader ()) (iken (rdr.read ()) ) (laist.add (yeni mylisttable (tuşu \u003d rdr.getstring (0), ekran \u003d rdr.getstring (1)));)))) var modeli \u003d yeni kullanıcılar (); Model.DropDownList \u003d Yeni SelectList (Liste, "Anahtar", "Ekran");

ve sonra, moderninizi sunuma göndermeniz gerekir:

Dönüş görünümü (model);

Şimdi Jilet'te görüntüleyebilirsin:

@ Html.dropdownlistfor (m \u003d\u003e model.dropdownlist);

Tabii ki, bu şeyleri en iyi isimlerle arayabilirsiniz, ancak bu fikri alacaksınız.

Zaten büyük cevaplar var, ama işte başka bir yaklaşım.

Kullanıcıyı bir model olarak, bir denetleyici olarak bir gösterim modeli ve UserController olarak listeServiewModel olarak kullanacaksınız. Çalışma Görünümü-Model, model sınıfına istenmeyen özellikler eklemeden, denetleyiciden görüntülenmesi gereken tüm bilgileri kontrol cihazından aktarmaktır. Açılır listeden veritabanından kullanıcınızın durumları listesinde.

Kamu sınıfı kullanıcısı // bu arada bir sınıf adlandırırken tekil kullan (halka açık string adı) Public Int user_id (GET; SET;))

Görme modeli

Public Score ListuserViewModel (Kamu Listesi) Kullanıcılar (GET; SET;))

kontrolör

Kamu Sınıfı UserController: Controller (Özel DatabaseSecontext DB \u003d Yeni Veritabayecontext (); Kamu ActionResult Listuser () () () () () () ()); var viewmodel \u003d yeni listeServiewModel (kullanıcılar \u003d kullanıcılar);) Dönüş Görünümü (ViewModel);) )

Şimdi sunumunuzdaki kullanıcı yerine listestorervishmodel kullanın.

@Model community.models.listuserviewmodel

ve bırakma

@ Html.dropdownlistfor (m \u003d\u003e M.Users, yeni selectlist (model.users, "user_id", "Name"), "")

Açıklama:

Modelli kullanıcılar için bir açılır liste oluşturursunuz. Kullanıcılar listenin listesinin listesinin bir kaynağı olarak. "user_id" Seçilen kullanıcının değeri ve ekran işareti olarak "Ad" değeri olarak. Son argüman (boş bir dizgeyi koydum "), açılır, seçimden önce açılan varsayılan değerdir.

Umarım bu size veya başkasına yardım eder.

Dene,

Ortak dize coutryid (get; set;) kamu listesi ÜİYÜKLÜLDÜRLUK (GET; SET;)

Listeyi dolduran denetleyici yöntemi

Kamu listesi. GetCountryList () (Kullanma (KULLANIM (QRMG_VENDORPORTALDATACONTEXTTAXTTAXTEXT \u003d qrmg_vendorportaldataconText ()) (geri dönüş (_context.countes c.isdelected \u003d\u003d false select c) .Tolist ();))))

Açılır liste

@ Html.dropdownlistfor (m \u003d\u003e m.coutryid, yeni selectlist (model.countryList, "CoutryID", "değer")))

bu veritabanındaki masam

Eylem denetleyicime bak

// Get: Halk ActionResult Endeksi () () (GörüntülüBag.LetterStatusservice.Getalllettterstatus (), "id", (CultureHelper.getcurrentCulture () \u003d\u003d "AR")? "Namearabic": "İsim", istek .Querystring ["letterstatus "]); Dönüş görünümü ();)

ve sunumda

@ Html.dropdownlist ("LetterStatus")

benim tarafından kullanılan tasarımcı

Yeni Seçme Listesi (Liste Mylistfromdatabase, string propertynameofvalueinhtml, string propertynameofdesplaynhtml, string selectiTemValue);

bu satır gerekir.querystring ["letterstatus"], çünkü seçilen öğeleri querysring

ve akım kremi temelinde, hangi sütunu gösterecek şekilde seçtim.

ve sonuç

ancak, yapmanın en iyi yolunun şudur: - Öğeleri alın veya oluşturun, ardından seçici etiketini manuel olarak oluşturmak için atmak için yineleyin. Bu yaklaşımı iyi tanımladım

11/25/06 12.7k.

Giriş

ASP.NET, .NET Framework bileşenlerinden biridir. Bu teknolojinin ana özelliklerini kısaca listeleyeceğiz.

* Topluluk Yönetici Çevresi CLR
* Sınıf Library.net Framework
* Diller .NET (C #, VB.NET, J # ve diğerleri)
* Ado.net
* ASP.NET
* İnternet servisi
* Ara MSIL Dili (Microsoft Ara Dil). Bu, çalışma zamanı ortamı CLR için bir montajdır.

ADO.NET, Microsoft SQL Server veritabanlarına OLEDB veri kaynaklarına ve XML dosyalarına erişmek için tasarlanmış bir sınıf kümesidir.

Projenizin farklı bölümleri farklı dillerde yazılabilir, bu çalışabilirlik denir. Sayfalardan birinin Visual Basic'te ve diğeri C # üzerindeki bir projeyi yazmaya çalışacağız.

Komple diller derlenir ve yorumlanır. Derlenmiş bir dilde yazılmış bir program derleme işleminde, yürütülen bir dosya (Windows - EXE'de). Hızlı bir şekilde yapılır, ancak başka bir platformda yürütülemez. Yürütüldüğü makine benzer bir konfigürasyona sahip olmalıdır. Örneğin, program bir DLL kullanıyorsa, bu kütüphane hedef makineye yüklenmelidir. Tercüme edilebilir programlar, yürütme sırasında derlenmiştir, bu yüzden daha yavaş çalışırlar, ancak belirli bir makineye bağlı değildir. V.NET Framework, iki kademeli bir derleme uygular, yani ilk aşama MSIL'teki bir derlemedir ve ikincisi, "tam zamanlı" derleyicinin yürütme sırasında derlenmesidir. JIT derleyicisi, uygulandığı makinenin kodunu optimize eder. ASP.NET'te, istemciyi sayfaya ilk kullandığınızda, sayfa MSIL'de derlenir. Bununla birlikte, kullandığı sınıflar derlendi. Visual Studio 2005 kullanıyorsanız, bir ilk istek bekleyemezsiniz ve projenizin tüm sayfalarını zorla derleyebilirsiniz. Bu, sözdizimsel ve diğer hataları tanımlamanıza izin verir.

MSIL, arabaya bağlı olmayan bir montajdır. CLR'nin kurulduğu herhangi bir makinede yapılabilir. Mono Project, CLR'yi diğer platformlara aktarmaya çalışıyor, farklı platformlarda çalışan sunucuları etkileşime girmenize izin veriyor.

Http://mono-project.com adresindeki proje ile tanışabilirsiniz.

Sayfa http://go-mono.com/archive/xsp-0.10.html, XSP - APACHE sunucusunun bir uzantısı olarak hizmet verebilecek bir ASP.NET sunucusudur - Ana Sunucu * Nix sistemleri.

ASP.NET nasıl çalışır?

Okuduğumuzda, ilgili dizinlerde C: WindowsMicrosoft.netFramework, Aspnet_isapi.dll dosyasını da yerleştirir. Bu bir ISAPI genişlemesidir ve ASP.NET uygulamalarına (* .aspx * .asmx, vb.) ASP.NET uygulamalarına (* .aspx * .asmx, vb.) GÖRMEK, ASPNET_WP.EXE, yakıt istekleri oluşturur. İnternet Sunucusu - IIS veya Dahili WebMatrix veya Dahili Visual Studio Cassini - Bu uzantıyı ASPX uzantı sayfalarına erişebilmeleri gerektiğinde kullanın.

Bu modül, ASPX sayfalarının içeriğini ayrı kod dosyasıyla birlikte ayrıştırır (ayrıştır) ve sayfa dilinde nesne sayfasıyla bir sınıf oluşturur. ASPX sayfası, özel etiketler tarafından açıklanan sunucu kontrollerinin normal HTML sayfası varlığından farklıdır. ASP.NET'in çalışmasını anlamak için, kontrol elemanının her bir etiketinin sayfa sınıfının üyesine karşılık geldiğini not etmek önemlidir. Örneğin,

b tarafından dönüştürülmüş

@__ctrl \u003d Yeni Global :: System.Web.Ui.Webcontrols.Label ();

Nesnenin ana görevi, çıkış akışındaki HTML kodunun parselidir. Bu sınıf, web sunucusu işlemine yüklenen Library.dll dosyasına derlenir. Sayfanın kaynak kodu değişmezse, sayfaya sonraki talepler de DLL'leri işler. Tüm bu dosyalar, geçerli sürüm. NET'in "Geçici ASP.NET Dosyaları" dizininde bulunabilir. Visual Studio 2005 veya VWD geliştirme ortamında çalışırsak, alt diziniz her proje için oluşturulur.

Sayfa Türleri ve Proje Klasörleri

Yeni dosya iletişim kutusundan yeni dosyalar ekleyebilirsiniz. "Kodu ayrı dosyaya yerleştir" onay kutusunu kaldırırsanız, Visual Studio, işlemek için bir sayfa ve kod olacağı bir dosya oluşturur (WebMatrix Style'da).

Tüm dosyalar proje dizinine yerleştirilir. Buna karşılık, proje dizinine yerleştirilecek tüm dosyalar bunun bir parçası olacaktır. Web siteleri için, Visual Studio'nın önceki sürümlerinde olduğu gibi, bileşen parçalarını listeleyecek özel bir file.CSPROJ yoktur. Çözüm yapısı (çözelti), bir metin dosyasında açıklanmıştır. Çözüm birkaç web sitesini ve kütüphaneyi içerebilir.

ASP.NET 2.0, farklı dosya türleri için özel proje girişlerine sahiptir. Örneğin, halka açık sınıflar, metin dosyaları ve diğerleri App_code klasöründe (VeriSet, Sınıf Diyagramı) saklanır. Uzantıları olan dosyalar. Eğlenceli olan CS OR.VB, herhangi bir proje sayfası istendiğinde otomatik olarak derlenir. App_Data, Proje - Erişim ve Microsoft SQL veritabanlarında, XML dosyalarında kullanılan veri kaynaklarını içerir. Bu dizinin dışından erişilemiyor, ancak yalnızca uygulamadan. Temalar Klasörü Proje Temalarını (Ders 13) depolar. Konuların kullanımı, sitenin tek tip görünümünü özelleştirmenize ve merkezi olarak yönetmenizi sağlar. App_globalresources, farklı dillerde oluşturulabilecek satır tabloları gibi kaynaklar içerir. Kullanıcı tarayıcı ayarlarına bağlı olarak kaynak dili otomatik olarak seçilir. App_webreferences klasörü, kullanılan web servislerine bağlantılar içerir.

Örneğin, resimleri saklamak için kendi proje girişinizi oluşturabilirsiniz.

2 dilde proje

Web sitesi projesi, sayfalarda (ve elbette çeşitli kaynaklar) kullanılan aspx ve sınıflardan oluşur. Farklı sayfalardan temas edebileceğiniz sınıfları olan dosyalar, özel bir App_code klasörüne yerleştirilir. Derleme yaparken, taşınabilir yürütülebilir formatta bir montaj - Library.dll olarak yerleştirilirler. Bu bir dil. NET ise, sınıfın hangi dilin yazıldığı önemli değildir.

Üçüncü taraf üreticilerin bitmiş derlenmiş yapımları da projede kullanılabilir. Bin klasörüne yerleştirilirler. Aynı zamanda, projeye ithal edilmeleri gerekir.

<%@ Import Namespace="MyCustomNamespace" %>

Yeni bir proje oluşturun. Sınıf dosyasının türünü ve Visual Basic dili seçerek bir dosya ekleyin. Çevrenin kendisi kod klasörüne koyacak. Buna CustomClass'u arayalım. Çok basit bir kodu olacak. Hello kelimesini bir parametre olarak iletilen ada ekleyen yalnızca bir fonksiyon.

Microsoft.Visualbasic Kamu Sınıfı CustomClass Kamu İşlev GetMessage (ByVal Adı) Dize Dönüşü "Hello" ve Ad End Fonksiyonu End Sınıfı olarak

Codefolder_CS.aspx sayfasını Projeye Ekle. Bu sayfa C # üzerine yazılmıştır, ancak VB.NET'te yazılı bir sınıf oluşturur.

<%@ page language="C#" %> ASP.NET Inline sayfaları.

ASP.NET 2.0'a hoş geldiniz!

ADINIZI GİRİNİZ:

Sayfa, bir Windows uygulaması şekline benzeyen bir formu tanımlar. Button1_Click işlevinde işlenmiş olan bir düğmeye basmak. Bir sınıf oluşturur ve getMessage işlevi, düzenleme öğesinden alınan bir parametre ile çağrılır. İade değeri Etiket1 öğesinde kaydedilir. Daha basit bir sürümde şöyle görünüyor:

Label1.Text \u003d "Merhaba" + TextBox1.Text;

Sınıf C #'da yazılabilir ve sayfadan Visual Basic'teki kullanabilir.

sistemi kullanma; Kamu Sınıfı CustomClass2 (String Girişi) (C # 'dan "+' dan Merhaba"))))) codefolder_vb.aspx sayfa kodu:

Bununla birlikte, App_code dizinine aynı dilde yerleştirmek mümkündür. Farklı dillerde dosyalar varsa, proje derlemeyecek. İki dil kullanmak için, bir alt dizin oluşturmanız, Web.config dosyasına eklemelisiniz ve dosyaları başka bir dilde yerleştirin.

Web.config dosyasında kayıt:

... ...

Direktif

Her ASPX sayfasında, direktifler genellikle sayfanın davranışını kontrol edebileceğiniz kullanılarak belirtilir. Dilleri ile iletişim kurduğunuz dili olarak düşünebilirsiniz, bu sayfayı nasıl işleyeceğinizi işaretleyin. Direktifler genellikle dosyanın başlangıcına yerleştirilir. İlk dersin direktif sayfasıyla tanıştık.

Sintaskis reklam direktifleri:

<%@ %>

Birkaç direktifi aynı anda ilan edebilirsiniz:

<%@ %>

ASP.NET 2.0'da 11 direktif var.
Direktif özellikleri Açıklama
@Assembly adı.
SRC bir sayfaya veya belirtilen adla bir montaj kontrolüne aktarır
@Control, kendi kullanıcı kontrollerinizi oluştururken özellikleri belirlemek için sayfa kullanıldığı ile aynıdır.
@IMplements arayüzü bu sayfanın sınıfının bu arayüzü uyguladığını gösterir.
@İmport ad alanı ithalat ad alanı
@MASTER, tasarım şablonunun sayfalarında (ana sayfa) sayfasında geçerli olduğu ile aynıdır. ASP.NET 2.0'da yeni
@MasterType TypeName.
VirtualPath, tasarım şablonunda yer alan sınıfa kesinlikle yazılmış bir bağlantı verir. Bu sınıfın özelliklerine erişmenizi sağlar.
@Outputcache süresi
yer
Varybycustom
Varybyader.
Varybyparam.
VARYBYCONTROL önbellekleme sayfasını veya kontrolünü yönetir. Ders 15'te açıklanan daha fazla oku.
@Page Bu sayfayla ilgili aşağıdaki özniteliklere bakın. Sadece ASPX uzantılı dosyalarda kullanılır
@PreviousPagetype Typeename.
VirtualPath Kullanıcı tarafından girilen verilerin gönderildiği sayfa. ASP.NET 2.0'da yeni. Önceden, sayfalar postayı yalnızca kendilerine gönderdi.
@Reference sayfası
Bununla birlikte derlenmesi gereken kontrol sayfası veya kontrol
@Register montajı
İsim alanı.
Src
Etiket adı.
Tagprefix, ad alanları ve kullanıcı kontrolleri için takma adlar oluşturur

Şimdiye kadar, 2 tanesi detaylı olarak göz önünde bulundurun - mesajlar ve ithalat.

Sayfa Direktifi

Sayfa Direktifi, derleme sırasında kullanılacak sayfanın özelliklerini ayarlamanızı sağlar. Bu yönerge, diğerlerinden daha sık kullanılmaktadır, bu nedenle daha ayrıntılı olarak kabul edilmelidir.

Direktifin en önemli özellikleri tabloda listelenmiştir:

Autoeventwireup. Otomatik sayfa olay işleme
Tampon. Sayfaları tamponlamayı yönetir. Varsayılan olarak, tamponlanmış
Sınıf adı. Bu sayfadan oluşturulan bir sınıf adı atamanızı sağlar.
Codefile. Bu sayfa için ayrılmış kodlu dosya adı
Kültür. Bölgesel parametreler kümesini ayarlar, yani. Dil, para birimi formatı, tarihler, sayılar
Hata ayıkla. Doğru ise, sayfada hata ayıklama bilgileri görüntülenir.
İz. İz Bilgilerinin Çevirisi
EnableViewState. Sayfa durumunu kaydetme. Varsayılan olarak, kaydedilir
Enabletheming. Tasarım için desteği etkinleştirmenizi veya devre dışı bırakmanızı sağlar. Varsayılan açık
Miras alır. Bu sayfanın sınıfının ayrılan kod teknolojisindeki sınıfın miras alındığı sınıf.
İsasync. Sayfanın zaman uyumsuz şekilde işlenip işlendiğini gösterir.
Dil. Gömülü kodda kullanılan dil
UyarıLevel. Derleyici Uyarılarının İzin Verilen En Büyük Seviyesi
Deferatörler. Tamamlayıcı seçenekleri

Sınıf kütüphane ad alanı

FCL sınıfları kütüphanesi binlerce ders içerir. Kullanım kolaylığı için, ad alanına birleştirilirler. Ad alanında ilan edilen sınıflara erişmek için, tam yolu belirtmeden, projeye ithal edilmelidir. XML formatı dosyalarıyla çalışmak istiyorsanız, System.xml ad alanını içe aktarmanız gerekir. C # üzerindeki ayrılmış kod sayfalarında, her zaman olduğu gibi, bir yönerge kullanılıyor.

sistem kullanımı. Xml;

ASPX sayfasında - İthalat Direktifi

<%@ Import Namespace= "System.XML " %>

Her ad alanı için ayrı bir ithalat direktifi gereklidir.

Visual Studio.net ve varsayılan olarak VWD, en sık kullanılan ad alanları C # sayfasına dahil edilmiştir. ASPX sayfası bu ad alanları gerekli değildir.

sistemi kullanma; System.Data'yı kullanma; System.Configuration'ı kullanma; System.collections kullanarak; System.Web; System.Web.Security kullanarak; System.Web.UI; System.web.ui.webcontrols kullanarak; system.web.ui.webcontrols.webparts kullanarak; System.web.ui.htmlcontrols kullanarak;

Örneğin, System.Web.UI ad alanında, herhangi bir ASP.NET sayfası, System.Web - HTTPRequest ve HTTPRESPonse'da bir sınıf sayfasıdır.

Sınıf Görüntüleyicisi Programı

Classes.net kütüphanesinde hangi sınıfların mevcut olduğunu nasıl öğrenebilirim? Bu, Nesne Tarayıcı (Visual Studio 2005) ve Sınıf Tarayıcı WebMatrix tarafından tasarlanmıştır. Nesne tarayıcısını Visual Studio 2005 veya VWD Express'te açmak için, Görünüm-\u003e Nesne Tarayıcı menü öğesini seçin. WebMatrix kullanıyorsanız, Class Browser, WebMatrix - Tüm Programlar-\u003e ASP.NET WebMatrix olarak aynı Windows Menu klasöründe bulunur. ASP.NET Sınıfı Tarayıcı Biçiminde Çerçeve SDK'ta bulunur.

Mevcut tüm ad alanları, bir ağaç yapısının düğümleri olarak gösterilir. System.Web ile ilgileniyoruz. Bu düğümü aç. İçinde başka ad alanları vardı. Açık System.Web.UI. Çok sayıda sınıf, arayüz, delege, numaralandırma var. Onları simgelerde bulabilirsiniz. Örneğin, delege simgesi bavula benzer.

- Sınıf

- Arayüz

- Etkinlik

- Liste

- Yöntem

Sayfayı seçin. Yöntemlerinin bir listesi, alanların ve olayların bir listesi sağ pencerede görünecektir. Yöntemi seçerseniz, açıklaması üçüncü pencerede görünecektir. Sınıfın içinde iki klasör var - baz sınıfları ve soyundan sınıflar var. Hepsi de görülebilir. Nesne tarayıcısı, mevcut projenin sınıflarını gösterir. Dersler XML belgeleri oluşturma etiketleri tarafından yorum yapılırsa, bu bilgiler, örneğin özet, parametreler, değerler, geri dönüşler de görülebilir.

ISPostback özelliğini keşfedin, Boolean değeri olduğunu ve yalnızca okumak için tasarlandığını öğrenebilirsiniz.

Uyum standartlarını kontrol edin

Farklı HTML ve XHTML standartları var. Daha sonra standartlar daha katı gereksinimler anlamına gelir, örneğin, XHTML 1.1 izin vermiyor
ve eğik çizgi kapanmadan diğer basit etiketler
. Aynı zamanda, eski standartlar yeni etiketleri desteklemiyor.

HTTP sorgu başlığı Belge standardını gösterir, tüm sayfalardaki Visual Studio 2005 aşağıdaki standardı gösterir:

Bu standart etiketteki XMLNS özelliğini gerektirir - Standardı açıklayan siteye bağlantılar.

ASP.NET'in önceki sürümleri için yapılan birçok sayfa böyle bir nitelik yoktur. HTML kaynak düzenleme yatırım panelinde, bu sayfanın amaçlandığı tarayıcının standart veya sürümünü seçebileceğiniz bir açılır liste vardır. Sayfa bu standarda uygunluk için otomatik olarak kontrol edilir.
Özellikler sayfası

Sayfa, web uygulamasındaki her şeyin temelidir.

System.Web.Ui.Page Sınıfı, ASP.NET sayfalarını oluşturmak ve işlemek için gereken işlevselliği kapsar.

Her ASP.NET sayfası, ASP.NET çekirdeği tarafından otomatik olarak oluşturulan bir sınıf nesnesidir. Sınıf, ayrılmış bir kod kullanırsak veya doğrudan system.web.ui.sayfağını doğrudan devralınırsak, sayfa ile ilişkili sınıftan miras alınır. C # kodu sayfaya gömülürse. Çarşamba ayrıca varsayılan tasarımcı yaratır.

Bir pagetype.aspx sayfası oluşturabileceğimizden emin olmak için:

<%@ Page Language="C#" %> Sayfa Türü

<% Response.Output.Write("Тип данной страницы {0}",this.GetType()); %>
<% Response.Output.Write("Базовый тип данной страницы {0}",this.GetType().BaseType); %>

İşte sonuç:


Bu sayfanın temel türü System.Web.Ui.Page

Kod ayırma teknolojisi ile oluşturulan aynı sayfa.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PageType.aspx.cs" Inherits="PageType" %>

sonucu yazar

Bu sayfanın türü asp.pagetype_aspx
Bu sayfanın temel türü Pagetype

Pagetype'ın System.Web.UI.Page'in varisi olduğu gerçeği, ayrılmış kodun dosyasında yazılır:

genel Kısmi Sınıf Pagetype: System.Web.Ui.Page

Geçerli sayfa nesnesine, değişken bir sayfa olarak iletişim kurabilirsiniz. Sayfa, bu sayfanın kontrol elemanlarının bir kabıdır, bu nedenle kontroller koleksiyonunu içerir. Eğer TEG'de Bir koşu \u003d "sunucu" niteliği var, ardından sayfa başlık sayfasını kontrol edebileceğiniz başlık alanını içerir. Örneğin, sayfanın adını tarayıcı başlığındaki adını değiştirin, bir stil basamaklı tablo dosyası atayın.

Merhaba ASP.NET.

ASP.NET'te programlamayı öğrenin

Bu örnekte, başlığın metnini değiştirdik. Bu sayfayı çalıştırın. Etiketin içindeki ortaya çıkan HTML kodunda Artık "Başlıksız Sayfa" yok, ancak sayfa yoluyla ayarlanan "yeni bir başlık" yok .Header.title. Etiket oluşturuldu <p>Bu şekilde ne düşündü:</p> <p><style type="text/css"> p { color:Blue;background-color:Beige; } </style></p> <p>CSS harici sayfası dosyadan ithal edildi.</p> <p><link href="printable.css" rel="stylesheet" type="text/css" /><style type="text/css"></p> <p>Если атрибут AutoEventWireup, который присутствует в заголовке страниц, генерируемых VS, установлен, то методы с префиксом Page_ автоматической назначаются обработчиками событий страницы.</p> <p>У страницы есть два важных свойства — Response и Request. Свойство Response имеет тип HttpResponse. Response страницы можно воспринимать как выходной поток. Весь HTML код генерируемой страницы в принципе может быть выведен через запись в этот поток. Это был обычный способ работы разработчиков asp. Но в ASP.NET есть более удобные средства вывода данных с помощью серверных элементов управления. Response лучше использовать для записи Cookies, для задания различных параметров заголовка – управлять кэшированием, свойством Expires.</p> <p>Вот пример из MSDN:</p> <p>HttpCookie MyCookie = new HttpCookie("LastVisit"); DateTime now = DateTime.Now; MyCookie.Value = now.ToString(); MyCookie.Expires = now.AddHours(1); Response.Cookies.Add(MyCookie);</p> <p>Можно поменять кодовую страницу.</p> <p><head runat="server"> <%Response.Charset = "windows-1251"; %> <title>Русская кодировка

Функция Response.Redirect перенаправляет браузер на другую страницу.

Response.Redirect("NavigationTarget.aspx?name=" + System.Web.HttpUtility.UrlEncode(Name.Text);

Здесь формируется командная строка с параметрами QueryString, которые целевая страница может прочитать.

Аналогично свойство Request – это запрос, переданный на сервер для вывода нужной страницы. Он имеет тип HttpRequest. В нем хранится все о клиенте, включая настройки его браузера, файлы-cookie и данные, введенные им в форму.

NameLabel.Text = Server.HtmlEncode(Request.QueryString["Name"]);

События страницы

Работа среды ASP.NET со страницей начинается с получения и обработки Web-сервером IIS запроса к данной странице и передачи этого запроса среде выполнения ASP.NET. Среда выполнения анализирует, нужно ли компилировать страницу или можно выдать в качестве ответа страницу из кэша.

Затем начинается жизненный цикл страницы. Он начинается с этапа PreInit. После получения запроса среда выполнения загружает класс вызываемой страницы, устанавливает свойства класса страницы, выстраивает дерево элементов, заполняет свойства Request и Response и свойства UICulture и вызывает метод IHttpHandler.ProcessRequest. После этого среда выполнения проверяет, каким образом была вызвана эта страница, и если страница вызвана путем передачи данных с другой страницы, о чем будет рассказано далее, то среда выполнения устанавливает свойство PreviousPage.

На этом этапе устанавливается также свойство IsPostback объекта Page, которое позволяет узнать, в первый ли раз загружается форма или она должна формироваться как результат обработки данных, введенных пользователем.

В обработчиках событий страницы можно проверить это свойство:

if (!Page.IsPostBack) { // обрабатывать }

Дальше происходит инициализация страницы – событие Init. Во времени инициализации страницы создаются дочерние пользовательские элементы управления и им установливаются свойства id. В это же время к странице применяются темы оформления. Если страница вызвана в результате постбэка, то на этом этапе данные, отправленные на сервер, еще не загружены в свойства элементов управления. Программист может инициализировать их свойства.

Если на странице существуют валидаторы(классы проверки данных, см. лекцию 5), то для них вызывается метод Validate(). Затем вызываются обработчики событий (при условии, что страница генерируется в ответ на действия пользователя).

В методе Render генерируется сам HTML-код выводимой страницы. При этом страница вызывает соответствующие методы дочерних элементов, те – методы своих дочерних элементов. В методе Render код выводится в Response.OutputStream. Сама страница тоже считается элементом управления – класс Page является наследником класса Control. Если на странице есть блоки отображения, они становятся частью функции отрисовки (rendering).

Наконец, страница выгружается из памяти сервера и происходит событие Unload.

Во время жизненного цикла страницы происходят различные события. Можно включить трассировку страницы, чтобы посмотреть порядок из возникновения.

<%@ Page Language="C#" Trace ="true" TraceMode="SortByTime" %>

Во время трассировки не выводится событие Unload, потому что оно происходит, когда весь код уже выведен. Во время обработки этого события нужно освободить ресурсы, например соединения с базами данных или открытые файлы.

Полный список событий страницы, которые можно переопределить в классе страницы:

* PreInit
* Init
* InitComplete
* PreLoad
* Load
* LoadComplete
* PreRender
* PreRenderComplete
* Unload

Для всех событий определены обработчики – виртуальные функции OnInit, OnLoad. Когда AutoEventWireup равно true, в классе автоматически объявляются функции-обработчики событий с префиксом Page — Page_Load, Page_Init и так далее. Одно из самых популярных событий – это Page_Load. Создавая новую страницу, Visual Studio создает обработчик этого события. Здесь можно изменить внешний вид элементов и создать новые. Можно установить AutoEventWireup в false. В таком случае надо писать перегруженные версии виртуальных функций.

protected override void OnInit(EventArgs e) { }

Так можно добиться ускорения работы страницы.
Способы внедрения кода ASP.NET в страницу.

Есть три способа внедрить код на программном языке в страницу aspx.

Блок называется блоком объявления кода.

Тег