Tüm web uygulama sayfalarında gösterilen dinamik menü (DB'de depolanmış) yapmaya çalışıyorum. Google'ı Kullanma Menü görünümünü Master View'ın (_Layout.cshtml) bir parçası olarak yapmak daha iyi olduğunu buldum. Ve bundan dolayı, denetleyicinin her eylemi yöntemi menü modeliyle veri içermelidir. olanakları bekliyor/Kurucu denetleyicisinde MVC async yöntemi
, ben asenk kullanmaya çalışıyorum ve benim PageService (menü) ToListAsync kullanıyor: Kod tekrarını önlemek için onun yapıcı kullanarak veri taban denetleyicisi oluşturmak ve sunmak için çözüm buldu() DB'den veri almak için. Yani şimdi ben BaseController yapıcı bir zaman uyumsuz yöntemini sahip olduğunu, bir sorun var:
public class BaseController : AsyncController, IBaseController
{
private readonly IPageService _pageService;
public BaseController(IPageService pageService)
{
_pageService = pageService;
SetBaseViewModelAsync();
}
private async Task SetBaseViewModelAsync()
{
ViewData["Pages"] = await _pageService.GetAllAsync();
}
}
Bu KÖTÜ KOD olduğunu biliyorum, ama düzgün bu durumu nasıl tasarlanacağı bilmiyorum. Belki de dinamik menüyü veya senkronize olmayan bir şekilde veri elde etmenin bir başka yolunu oluşturmanın daha iyi bir yolu var mı?
Ayrıca, bu makale buldum ama bilmiyorum çünkü onun çözüm uygulayabilirler eğer kontrolör örneği oluşturma işleyebilir eğer bilmiyorum:
http://blog.stephencleary.com/2013/01/async-oop-2-constructors.html
Bu kötü tasarım, orada haklısınız. Bunun yerine –
yerine bir orta eşya veya eylem filtresine bakmalısınız. Lütfen uygun tasarımlara sahip makalelere bazı bağlantılar sunabilir misiniz? Çünkü dinamik menüyü nasıl uygulayacağımı bulmak için 1-2 saat çalıştım. –
Bu, [Çocuk Eylemi] için iyi bir aday gibi görünüyor (https://stackoverflow.com/questions/12530016/what-is-an-mvc-child-action). Ayrıca bu soruya https: // stackoverflow bakın.com/questions/21948909/asp-net-mvc-controller-for-layout – Jasen