将ViewModel传递到标识页面中的视图中



在一个名为AccountController的控制器中,我有一个方法MeetingLog((,它收集我需要的信息,并将其存储在ViewModel中。然后我采用名为meetingInfo的ViewModel,并尝试使用";return View(meetingInfo(";。通常,为了访问ViewModel,我会直接进入Views文件夹并插入"@model ITMatching.ViewModels.MeetingLogViewModel";在MeetingLog.cshtml文件的顶部。不幸的是,这个剃刀页面位于";"身份页";并且需要更多的工作来访问ViewModel。

这个特定目录的问题";Areas/Identity/Pages/Account/Manage/MeetingLog.cs.html";这使得在_ManageNav.cshtml文件中很难使用锚标记辅助属性(asp控制器(。

视图位于中的标识目录的图像

我正在使用的示例:使用asp控制器的代码

asp控制器可以使用asp控制器=";管理/帐户";但它总是将"/"转换为"%"2F";使得页面不可访问。并且仅使用asp控制器=";帐户";忽略对";区域/身份/"目录,而这正是我需要它做的。

要将ViewModel传递到Identity页面内或两个请求之间的视图中,可以使用Sessions或TempData(由会话状态支持(。启用会话中间件后,可以使用session和TempData存储对象(需要添加会话扩展或TempData扩展(,然后在Razor Page OnGet方法中,您可以从会话和TempData中获取值,并将其分配给视图模型。

更多详细信息,请查看以下链接:

将对象(和子对象(从Razor页面发送到另一个

ASP.NET Core 中的会话和状态管理

asp控制器本可以使用asp控制器=";管理/帐户";但它总是将"/"转换为"%2F";使得页面不可访问。并且仅使用asp控制器=";帐户";忽略对";区域/身份/"目录,而这正是我需要它做的。

对于区域,如果文件夹结构使用MVC文件夹结构(包含控制器和视图(,则在视图页面中,可以使用asp-areaasp-controllerasp-action属性生成链接:

<a asp-area="" asp-controller="Home" asp-action="About">/Home/About </a>

对于Razor页面文件夹结构,可以使用asp-areasasp-page属性添加超链接:

<a asp-area="Products" asp-page="/About"> Products/About </a>

此外,您还可以直接使用href属性:

<a class="nav-link" href="/Identity/Account/Manage/Index">View Meeting Logs</a>

有关区域的详细信息,请参阅ASP.NET Core 中的区域

[注意]对于受保护的页面,它要求用户首先登录,因此,它将重定向登录页面。例如:https://localhost:44310/Identity/Account/Login?ReturnUrl=%2FIdentity%2FAccount%2FManage%2FIndex。登录成功后,它将重定向到Manage/Index页面。

最新更新