En iyi yanıtlayıcılar
MVC Layout içerisinde ViewBag Kullanmak

Soru
-
Arkadaşlar Ana Layout içerisinde yazdırmam gereken veriler var. Normal olarak bir Controller içerisinde ViewBag'e veri atayıp Controller'a bağlı bir Action'da kullanarak verileri görüntüleyebiliyorum.Fakat bunu Layout içerisinde yapamadım.Yardımcı olursanız sevinirim.
- Düzenleyen metehan koray 16 Mayıs 2019 Perşembe 15:43
Yanıtlar
-
ViewBag ile olmaz. Layout'ta View yok.
Önce HomeController'inizde bir Action oluşturun;[ChildActionOnly] public ViewResult KategoriMenu() { return View(dbContext.Kategoriler.ToList()); }
Daha sonra bunun view'ini oluşturun. Yalnız çok önemli layout'unu null yapın, yoksa iç-içe kendini sonsuza kadar render etmeye çalışır.
@model IEnumerable<Kategori> @{ Layout = null; } <ul> @foreach(var kategori in Model) { <li>@kategori.Ad</li> } </ul>
Daha sonra Layout'unuzda, istediğiniz yere Html.Action ile render ettirin. Controller belirtmeyi unutmayın çünkü layout herhangi bir controller'e bağlı değil.
<div>
@Html.Action("KategoriMenu", "Home")
</div>
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
- Yanıt Olarak Öneren Mehmet Emin Kaymaz 16 Mayıs 2019 Perşembe 16:51
- Düzenleyen Önay YALÇINER 16 Mayıs 2019 Perşembe 16:52
- Yanıt Olarak İşaretleyen Kyamuran SalibryamMicrosoft contingent staff, Moderator 21 Mayıs 2019 Salı 10:05
Tüm Yanıtlar
-
Controller ile Viewbag i dolduracaksınız ve bunu return edeceksiniz evet , ama gerekirse view üzerinden veritabanına bağlanabilirsiniz.
view içerisinde @using projeadı.Models ve sonrası basitçe
using(someentities db = new someentities ){ liste = db.Tabloadi.ToList();//listeyide tanımlayabilirsin view da (yazmadım) }
Tabi burada ne bir pattern var nede kod çok düzgün değil :) (Tabi birde Default olarak entity framework kulalndığınızı düşündüm ama? )
-
ViewBag ile olmaz. Layout'ta View yok.
Önce HomeController'inizde bir Action oluşturun;[ChildActionOnly] public ViewResult KategoriMenu() { return View(dbContext.Kategoriler.ToList()); }
Daha sonra bunun view'ini oluşturun. Yalnız çok önemli layout'unu null yapın, yoksa iç-içe kendini sonsuza kadar render etmeye çalışır.
@model IEnumerable<Kategori> @{ Layout = null; } <ul> @foreach(var kategori in Model) { <li>@kategori.Ad</li> } </ul>
Daha sonra Layout'unuzda, istediğiniz yere Html.Action ile render ettirin. Controller belirtmeyi unutmayın çünkü layout herhangi bir controller'e bağlı değil.
<div>
@Html.Action("KategoriMenu", "Home")
</div>
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
- Yanıt Olarak Öneren Mehmet Emin Kaymaz 16 Mayıs 2019 Perşembe 16:51
- Düzenleyen Önay YALÇINER 16 Mayıs 2019 Perşembe 16:52
- Yanıt Olarak İşaretleyen Kyamuran SalibryamMicrosoft contingent staff, Moderator 21 Mayıs 2019 Salı 10:05