this useful responseを実装し、ビューをShared
ビューフォルダに移動すると、別のコントローラから呼び出すと初期化されません。共有ビューを正しく初期化する方法
私の呼び出しコード:AccountControllerで
[HttpGet]
public IActionResult AddressCorrectionList()
{
if (ValidateSecurityToken()) // ensures the app server thinks we're still logged in
{
[deleted for clarity]
return View(model);
}
else
{
return View("Login", new LoginViewModel { ReturnUrl = "/Report/AddressCorrectionList" });
}
}
アクションが呼び出されている:
[ActionName("Login"), HttpGet]
[AllowAnonymous]
public IActionResult LoginGet(LoginViewModel model)
{
ViewData["ReturnUrl"] = model.ReturnUrl; // I set a breakpoint here.
if (model.ReturnUrl != null)
{
model.InfoMessage = "Please login to access " + ResourceNameFor(model.ReturnUrl);
}
ModelState.Clear();
return View(model);
}
私が直接ログインページへのリンクをたどる場合は、それが正常に動作します。私のブレークポイントはLoginGet
です。
ログインが必要なページへのリンクをたどろうとしても、ログインしていないと正常に動作します。私は正しくログインページにリダイレクトされています。私のブレークポイントはLoginGet
です。
View
を2つのコードスニペットの最初のような別のコントローラから呼び出すと問題が発生します。ログインページが表示されますが、私のブレークポイントはLoginGet
ではなく、私のReturnUrl
は設定されていません。
ValidateSecurityToken
が存在します。アプリケーションはユーザーがログインしているとみなすことがありますが、API呼び出しを行う別のアプリケーションサーバーは独自のタイムアウトルールのためユーザーをログアウトする可能性があるからです。
AddressCorrectionList
から私の電話を修正するにはどうすれば私のビューが適切に初期化されますか?
多分いくつかの明確さが役に立ちます。共有ビューを親ビューから部分ビューとして呼び出すのですか?そうでない場合、どのようにレンダリングしていますか? –
これは部分的な表示ではありません。 'Views/Account'ディレクトリにあり、おそらく' _Layout.cshtml'内の 'RenderBody()'呼び出しの中でレンダリングされた "普通の" '.cshtml'ビューです。 (私はあなたが私に尋ねようとしているものの本質を見逃しています。) –