Alıştırma - Blazor uygulamalarında verilere denetim bağlama
Blazing Pizza uygulamasının müşteriler pizzaları değiştirip siparişlerine eklediğinde arabirimini güncelleştirmesi gerekiyor. Blazor, değerleri değiştiğinde güncelleştirilecek HTML denetimlerini C# özelliklerine bağlamanıza olanak tanır.
Müşteriler hangi pizzaları sipariş ettiklerini ve seçtikleri boyutun fiyatı nasıl etkilediğini görmelidir.
Bu alıştırmada Blazing Pizza uygulamasını siparişlerin güncelleştirilebileceği ve düzenlenebileceği bir konuma sahip olacaksınız. Denetimleri bir pizzanın özelliklerine bağlamayı ve bu değişiklikler üzerine fiyatları yeniden hesaplamayı öğrenin.
Müşterinin pizza siparişini görüntüleme
Müşterinin siparişine eklediği tüm pizzaları görüntüleyen bir kenar çubuğu ekleyeceksiniz.
Hala çalışıyorsa uygulamayı durdurun.
Visual Studio Code'da, dosya gezgininde Sayfalar'ı genişletin ve ardından Index.razor'ı seçin.
@ifve@codeblokları arasına şu kodu ekleyin:<div class="sidebar"> @if (order.Pizzas.Any()) { <div class="order-contents"> <h2>Your order</h2> @foreach (var configuredPizza in order.Pizzas) { <div class="cart-item"> <div class="title">@(configuredPizza.Size)" @configuredPizza.Special.Name</div> <div class="item-price"> @configuredPizza.GetFormattedTotalPrice() </div> </div> } </div> } else { <div class="empty-cart">Choose a pizza<br>to get started</div> } <div class="order-total @(order.Pizzas.Any() ? "" : "hidden")"> Total: <span class="total-price">@order.GetFormattedTotalPrice()</span> <a href="checkout" class="@(OrderState.Order.Pizzas.Count == 0 ? "btn btn-warning disabled" : "btn btn-warning")"> Order > </a> </div> </div>Bu HTML sayfaya bir kenar çubuğu ekler.
OrderState.Orderiçinde pizza varsa, bunları görüntüler. Sipariş yoksa, müşterilerin sipariş eklemeleri teşvik edilir.Bileşen siparişlerin ne olduğunu bilmediğinden bazı hatalar vardır.
@codealtındakiList<PizzaSpecial> specials = new();bloğuna şu kodu ekleyin:Order order => OrderState.Order;F5'i veya Çalıştır'ı seçin. Ardından Hata Ayıklamayı Başlatseçeneğini seçin.
Biraz pizza sipariş etmeyi ve bazılarını iptal etmeyi deneyin. Sepete eklendiklerini ve sipariş toplamının güncellendiğini fark edin.
Shift+F5 seçin veya Hata Ayıklamayı Durdurseçin.
Müşterinin siparişinden pizza kaldırma
Yapılandırılmış pizzayı müşterinin alışveriş sepetinden kaldırmanın bir yolu olmadığını fark edebilirsiniz. Şimdi bu işlevi ekleyelim.
İlk adım, pizzaları bir siparişten kaldırma yöntemi sunabilmesi için OrderState hizmetini güncelleştirmektir.
Dosya gezgininde Hizmetler/OrderState.cs'ı seçin.
sınıfının en altına şu yöntemi ekleyin:
public void RemoveConfiguredPizza(Pizza pizza) { Order.Pizzas.Remove(pizza); }Dosya gezgininde Sayfalar'ı genişletin ve index.razor öğesini seçin.
<div class="cart-item">'da, bir kaldırma düğmesi oluşturmak için kapanış<a>'den önce bir</div>etiketi ekleyin.<a @onclick="@(() => OrderState.RemoveConfiguredPizza(configuredPizza))" class="delete-item">x</a>Bu etiket, sipariş kenar çubuğundaki her pizzaya bir
Xekler. Bunu seçtiğinizde, hizmetteRemoveConfiguredPizzaOrderStateyöntemini çağırır.F5'i veya Çalıştır'ı seçin. Ardından Hata Ayıklamayı Başlatseçeneğini seçin.
Shift+F5 seçin veya Hata Ayıklamayı Durdurseçin.
Pizza boyutunu dinamik olarak yapılandırma
Boyut kaydırıcısı değiştirildiğinde pizza yapılandırma iletişim kutusu güncelleştirilmez. Bileşenin pizzayı ve boyutunu güncelleştirmenin ve ardından fiyatı yeniden hesaplamanın bir yoluna ihtiyacı vardır.
Dosya gezgininde Paylaşılan genişletin ve ardından ConfigurePizzaDialog.razorseçin.
HTML denetiminin
inputdeğerini pizza boyutuna bağlamak için kod ekleyin:<input type="range" min="@Pizza.MinimumSize" max="@Pizza.MaximumSize" step="1" @bind="Pizza.Size"/>F5'i veya Çalıştır'ı seçin. Ardından Hata Ayıklamayı Başlatseçeneğini seçin.
Siparişinize farklı boyutta pizzalar eklemek için güncelleştirilmiş iletişim kutusunu kullanın. Kaydırıcı çubuğunda sürüklemek yerine bir nokta seçin. Kontrolde fare tuşu serbest bırakıldığında pizza boyutunun güncellendiğini gözlemleyin.
Kaydırıcıyı sürüklerseniz, fareyi serbest bırakana kadar boyut değişmez. Bunu düzeltelim.
Shift+F5 seçin veya Hata Ayıklamayı Durdurseçin.
Denetimin bağlı olması gereken olayı ekleyin:
<input type="range" min="@Pizza.MinimumSize" max="@Pizza.MaximumSize" step="1" @bind="Pizza.Size" @bind:event="oninput" />F5'i veya Çalıştır'ı seçin. Ardından Hata Ayıklamayı Başlatseçeneğini seçin.
@bind="Pizza.Size" kodu eklemek nasıl bu kadar çok işlevsellik sağladı?
ConfigurePizzaDialog.razor kodunun tamamını incelerseniz ekibinizin diğer öğeleri zaten pizzanın özelliklerine bağladığını görürsünüz.
Örneğin, bu kod nedeniyle fiyat güncelleştirilir:
Price: <span class="price">@(Pizza.GetFormattedTotalPrice())</span>
Pizza GetFormattedTotalPrice() yöntemi toplam fiyatı hesaplamak için pizza boyutunu kullandığından pizza boyutu değiştikçe fiyat güncelleştirilir.
Blazing Pizza uygulamasında ilerleme kaydettiniz. Geliştirmeye devam etmek istiyorsanız bu öğrenme yolundaki bir sonraki modülü tamamlayın.