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 Eklemesistemi 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
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 listeleme: List.CSHTML Temsilciliği@Model IEnumerable.
@ 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 ekleyinsistemi 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
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)
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
Listeyi dolduran denetleyici yöntemi
Kamu listesi.
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
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#" %>
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#" %>
İş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.
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
Bu şekilde ne düşündü:
CSS harici sayfası dosyadan ithal edildi.
Если атрибут AutoEventWireup, который присутствует в заголовке страниц, генерируемых VS, установлен, то методы с префиксом Page_ автоматической назначаются обработчиками событий страницы.
У страницы есть два важных свойства — Response и Request. Свойство Response имеет тип HttpResponse. Response страницы можно воспринимать как выходной поток. Весь HTML код генерируемой страницы в принципе может быть выведен через запись в этот поток. Это был обычный способ работы разработчиков asp. Но в ASP.NET есть более удобные средства вывода данных с помощью серверных элементов управления. Response лучше использовать для записи Cookies, для задания различных параметров заголовка – управлять кэшированием, свойством Expires.
Вот пример из MSDN:
HttpCookie MyCookie = new HttpCookie("LastVisit"); DateTime now = DateTime.Now; MyCookie.Value = now.ToString(); MyCookie.Expires = now.AddHours(1); Response.Cookies.Add(MyCookie);
Можно поменять кодовую страницу.
<%Response.Charset = "windows-1251"; %>Функция 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.
Блок называется блоком объявления кода.
Тег