エンティティのプロパティが特定の値を持つ場合、ページにグローバルにリダイレクトする最良の方法について、かなり簡単な質問があります。たとえば、単純なゲームを持ち、すべてのユーザーにキャラクタエンティティを持たせたいが、特定のゲームルートにアクセスする前に、そのキャラクタを作成する必要があります(例:名前、性別など)。私は、あなたが単にこれに対してプロパティbool(Created/not created)を持つことができたと考えていました。ASP.NETエンティティがグローバルに設定されたプロパティを持つ場合、ページにリダイレクト
私の質問は、文字が「作成されていません」プロパティを持っていても、それ以外の場合は何もしない場合、「CreateCharacter」コントローラの「Index」にどのようにリダイレクトできますか?
私はカスタムアクションフィルタを使用してグローバルフィルタとして登録しようとしましたが、これは非常にうねりがあり、無限ループを生成します。私がここで紛失している明らかな単純な解決策はありますか?
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
using (var dbCtx = new ApplicationDbContext())
{
var character = HttpContext.Current.GetCharacter(dbCtx);
if (character == null)
{
base.OnActionExecuting(filterContext);
return;
}
if (character.IsCreated)
{
base.OnActionExecuting(filterContext);
return;
}
filterContext.Result = new RedirectToRouteResult(
new RouteValueDictionary(new {controller = "CreateCharacter", action = "Index"})
);
filterContext.Result.ExecuteResult(filterContext.Controller.ControllerContext);
base.OnActionExecuting(filterContext);
}
}
カスタムフィルタを使用している場合、これについて間違った考えがある場合は、代替案を習得したいと思います。