HTML formunda method niteliği yazılmazsa tarayıcı formu varsayılan olarak GET metoduyla gönderir; bu durumda form verileri URL'ye sorgu dizesi (query string) olarak eklenir. POST ise ancak method="post" açıkça belirtilirse kullanılır. action ve diğerleri metot değil, formun niteliğidir.
Web Programlama 2022 Final
Kaynak: https://lolonolo.com/2023/01/10/web-programlama-2-2022-final-sorulari/
📖 Konu özeti (sınav öncesi tekrar)
Web Programlama 2 2022 Final Soruları
Bir form, post Işlemi ile gönderildiğinde bu işleml karşılayacak metod nasıl tanımlanabilir?
ASP.NET Core MVC'de bir action metodunun yalnızca POST isteklerini karşılaması için metodun üstüne [HttpPost] özniteliği (attribute) yazılır. Metot adını HttpPost() yapmak bir şey ifade etmez; [HttpGet] ise GET isteklerini karşılar.
LINQ First() metodu, koşulu sağlayan bir kayıt bulamazsa null döndürmez, InvalidOperationException hatası fırlatır. Null (ya da varsayılan değer) döndüren metot FirstOrDefault()'tur. Bu yüzden yanlış olan ifade yalnızca IV'tür.
HTTP durum kodlarında 2xx ailesi başarıyı gösterir ve 200 (OK) isteğin başarıyla işlendiğini belirtir. 1xx bilgilendirme, 3xx yönlendirme, 4xx istemci hatası (ör. 400 Bad Request), 5xx sunucu hatası (ör. 500) anlamına gelir.
new Kitap(){KitapID= 1, KitapSayfasl = 90},
new Kitap(){KitapID= 2, KitapSayfasl = 80},
new Kitap(){KitapID= 3, KitapSayfasl = 90},
new Kitap(){KitapID= 4,KitapSayfasl= 40},
new Kitap(){KitapID=5, KltapSayfasl = 30 }
};
var sonuc = Kitaplar.Max(s=>s.KitapSayfası);
Yukarıdaki kod çalıştırıldığında sonuç değişkenindeki değer ne olur?
Max(s => s.KitapSayfasi) listedeki kitapların sayfa sayıları içinden en büyüğünü döndürür. Değerler 90, 80, 90, 40, 30 olduğundan en büyük değer 90'dır. 330 toplam (Sum), 66 ise ortalama (Average) olurdu.
İstemciden gelen cookie'ler HTTP isteğinin (request) parçasıdır; bu yüzden okunması Context.Request.Cookies["renk"] ile yapılır. Response.Cookies ise cookie yazmak/eklemek için kullanılır, okumak için değil.
MVC, Model-View-Controller kelimelerinin kısaltmasıdır. Model veriyi ve iş kurallarını, View kullanıcı arayüzünü, Controller ise istekleri karşılayıp model ile view arasındaki akışı yönetir.
Framework (çatı/çerçeve), geliştiricilere hazır bileşenler, kod kütüphaneleri ve uygulama şablonları sunarak yazılım geliştirmeyi hızlandıran yapıdır. Web 1.0, 2.0, 4.0 gibi kavramlar ise web'in gelişim aşamalarını anlatır.
[Display], [Required], [StringLength] gibi veri doğrulama ve görüntüleme öznitelikleri System.ComponentModel.DataAnnotations isim alanında bulunur. Bu yüzden modelde kullanılabilmeleri için bu namespace eklenmelidir.
Bir string özelliğin en fazla belirli sayıda karakter alabilmesini denetlemek için [StringLength(20)] veri doğrulama özniteliği kullanılır. Öznitelikler köşeli parantez içinde ve parametre normal parantezde yazılır; B şıkkındaki StringLength[20] söz dizimi hatalıdır.
Layout dosyası (_Layout.cshtml) tüm sayfalarda ortak olan görünümü içerir: HTML iskeleti, menüler, CSS ve JavaScript kütüphanesi referansları. Model sınıfı tanımları ise C# sınıfı olarak Models klasöründe yapılır, layout dosyasında bulunmaz.
II – Hidden Fields(Gizli Alanlar)
III – Session
Yukarıdakilerden hangisl/hangileri sunucu makinesinde tutulur?
Session verileri sunucu tarafında tutulur; istemciye yalnızca oturumu tanımlayan bir kimlik gönderilir. Query string URL'de, gizli alanlar (hidden fields) ise sayfanın HTML'inde yani istemci tarafında taşınır. Bu yüzden sunucuda tutulan yalnızca III'tür.
Sunucu tarafı model doğrulamada, gönderilen veriler modeldeki doğrulama özniteliklerine uyuyorsa ModelState.IsValid özelliği true olur. Controller'da genellikle if (ModelState.IsValid) ile kontrol edilir; ModelState.Valid diye bir özellik yoktur.
ASP.NET Core'da Web API controller'ları varsayılan olarak ControllerBase sınıfından türetilir. ControllerBase view desteği olmayan temel controller işlevlerini sağlar; view desteği gereken MVC controller'ları ise Controller sınıfından türer. ApiController ise bir sınıf değil, [ApiController] özniteliğidir.
LINQ, Language Integrated Query (Dile Entegre Sorgu) kısaltmasıdır. Sorgu yeteneklerinin doğrudan C# diline entegre edilmesini sağlar; böylece koleksiyonlar, veritabanları ve XML üzerinde aynı söz dizimiyle sorgu yazılabilir.
public string KullanlclAdl { get; set; }
Bir alanın boş geçilemeyeceğini belirtmek için [Required] özniteliği kullanılır; özel hata mesajı ise adlandırılmış ErrorMessage parametresiyle verilir: [Required(ErrorMessage = "...")]. E şıkkında parametre adı yazılmadığı için, A ve D'de ise köşeli parantez/öznitelik adı eksik olduğu için söz dizimi hatalıdır.
</form>
şeklinde tanımlanan bir form tag helper’ı İçin üretllen Html çıktısı ne olur?
Entity Framework Core'da her model sınıfı veritabanında bir tabloya, sınıfın özellikleri (property) ise o tablonun sütunlarına (kolonlarına) karşılık gelir. Sınıftan oluşturulan her nesne de tablodaki bir kayda (satıra) denk gelir.