После внедрения this useful response и перемещения моего Login
вид на папку с изображениями Shared
, она не инициализируется, когда я вызываю ее с другого контроллера.Как правильно инициализировать общий вид?
Мой код вызова:
[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" });
}
}
Действие в AccountController называют:
[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
с другого контроллера, например, из первого из двух фрагментов кода. Отображается страница входа в систему, однако моя точка останова от LoginGet
не вызывается, а мой ReturnUrl
не установлен.
ValidateSecurityToken
существует, потому что, хотя приложение может рассмотреть возможность входа пользователя в систему, отдельный сервер приложений, на который я запускаю вызовы API, может вывести пользователя из-за его собственных правил тайм-аута.
Как исправить мой звонок от AddressCorrectionList
, так что мое представление правильно инициализировано?
Возможно, какая-то ясность поможет. Так вы называете общее представление входа в виде частичного представления из родительского представления? Если нет, как вы его визуализируете? –
Это не частичный вид. Это просто «нормальное» представление '.cshtml', которое раньше использовалось в каталоге« Представления/учетная запись »и отображается, предположительно, в вызове« RenderBody() »в' _Layout.cshtml'. (Methinks Мне не хватает сути того, что вы пытаетесь спросить меня.) –