私は検索しましたが、空のIViewComponentResultを返す方法が見つかりませんでした。私がそれを行うことができた唯一の方法は、空のビューを返すことです。より良い方法がありますか? これは私のコードです:空のビューコンポーネントを返す方法MVC 6?
public class ClientNavigationViewComponent : ViewComponent
{
public IViewComponentResult Invoke()
{
return User.IsInRole(UserRoles.CLIENT)
? View("_ClientMenu")
: (IViewComponentResult)new EmptyResult();
}
}
これは例外である:
型「System.InvalidCastExceptionの」の例外がで発生したが、ユーザーコード
追加情報では処理されませんでした: 'Microsoft.AspNet.Mvc.EmptyResult'型のオブジェクトをキャストして 'Microsoft.AspNet.Mvc.IViewComponentResult'と入力できません。
nullを返そうとしましたが、それも機能しません。何か案は? EDITは、それはこのように動作製:
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);
}
}