Szukałem, ale nie znalazłem żadnego sposobu, aby zwrócić pusty IViewComponentResult. Jedynym sposobem, w jaki udało mi się to zrobić, jest zwrócenie pustego widoku. Czy istnieje lepszy sposób? To jest mój kod:Jak zwrócić pusty widok komponentu MVC 6?
public class ClientNavigationViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{
return User.IsInRole(UserRoles.CLIENT)
? View("_ClientMenu")
: (IViewComponentResult)new EmptyResult();
}
}
Jest to wyjątek:
Wyjątek typu „System.InvalidCastException” wystąpił w ale nie było obsługiwane w kodzie użytkownika
dodatkowe informacje : Nie można rzucić obiektu typu "Microsoft.AspNet.Mvc.EmptyResult", aby wpisać "Microsoft.AspNet.Mvc.IViewComponentResult".
Próbowałem zwrócić wartość null, ale to też nie zadziała. Jakieś pomysły? EDIT Wykonane to działa tak:
public class ClientNavigationViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{
if (User.IsInRole(UserRoles.CLIENT))
return View("_ClientMenu");
return new EmptyViewComponent();
}
}
public class EmptyViewComponent : IViewComponentResult
{
public void Execute(ViewComponentContext context)
{
}
public Task ExecuteAsync(ViewComponentContext context)
{
return Task.FromResult(0);
}
}