모든 웹 응용 프로그램 페이지에 표시되는 동적 메뉴 (DB에 저장)를 만들려고합니다. Google을 사용하여 메뉴보기를 마스터보기 (_Layout.cshtml)의 일부로 만드는 것이 좋습니다. 이 때문에 컨트롤러의 모든 동작 메소드에는 메뉴 모델이있는 데이터가 있어야합니다. 가능성을 기다리고 있습니다/생성자 컨트롤러에서 MVC 비동기 메서드
, 내가 비동기를 사용하기 위해 노력하고있어 내 PageService (메뉴) ToListAsync을 사용하고 있습니다 : 코드 중복을 피하기 위해 나는 그것의 생성자를 사용하여 데이터를 기본 컨트롤러를 만들고 제공하는 솔루션을 발견()를 사용하여 DB에서 데이터를 가져옵니다. 그래서 지금은 BaseController 생성자가 비동기 방법이 있는지, 문제가 :
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();
}
}
나는이 나쁜 코드 것을 알고,하지만 난 제대로이 상황을 설계하는 방법을 모르겠어요. 어쩌면 동적 메뉴를 만들거나 데이터를 비동기 적으로 가져 오는 다른 방법을 만드는 더 좋은 방법이 있을까요?
또한, 나는이 기사를 찾았지만, 내가 알고하지 않기 때문에 나는 그것의 솔루션을 적용 할 수 있을지는 컨트롤러 인스턴스 생성 처리 할 수 있을지 모르겠어요 :
http://blog.stephencleary.com/2013/01/async-oop-2-constructors.html
그건 나쁜 디자인이야, 거기 맞습니다. 대신 미들웨어 또는 액션 필터를 찾아야합니다. –
응답 해 주셔서 감사합니다! 적절한 디자인의 기사에 대한 링크를 제공해주십시오. 동적 메뉴를 구현하는 방법을 찾기 위해 1-2 시간 동안 봤 거든. –
[Child Action] (https://stackoverflow.com/questions/12530016/what-is-an-mvc-child-action)의 후보로 들립니다. 이 질문은 https : // stackoverflow를 참조하십시오.com/questions/21948909/asp-net-mvc-controller-for-layout – Jasen