用两个局部视图加载和更新视图
本文关键字:加载 视图 更新 新视图 局部 两个 | 更新日期: 2023-09-27 17:57:59
使用C#、MVC、Razor
我很难理解如何在两个局部视图上执行模型加载,并在用户输入时用新信息更新这些视图
我有一个包含以下内容的常规视图:
@model Myapp.ViewModels.SearchedUser
<body>
<div id="tabs">
<ul>
<li><a href="#tabs-1">User</a></li>
<li><a href="#tabs-2">Groups</a></li>
</ul>
<div id="tabs-1">
@Html.Partial("_Edit");
</div>
<div id="tabs-2">
@{Html.Partial("_Groups");}
</div>
</div>
最初,用户显示在主视图上。然而,我需要从用户那里更新/添加/删除组,并在添加代码时开始将其移动到选项卡页面。
所以在编辑的部分视图上,我有:
@model Myapp.ViewModels.SearchedUser
...display code for user
我觉得从主视图来看,这里的@模型可能是多余的。
我的小组部分视图如下:
@model Myapp.ViewModels.AllGroups
<!--at if (Model.AddGroups != null)
{ -->
<h2>Groups to be Added</h2>
<table id="AddGroupList">
<thead>
<tr>
<th>
Name
</th>
<th>
Until
</th>
<th>
Action
</th>
</tr>
</thead>
<tbody>
@foreach (var Group in Model.CurrentGroups)
{
<tr>
<td>
@Html.DisplayFor(model=> Group.GroupName)
</td>
<td>
@Html.DisplayFor(model=> Group.EndDate)
</td>
<td>
@Html.DisplayFor(model=> Group.bRemove)
</td>
<td>
@if (AuthCheck.CheckUser(new HttpContextWrapper(HttpContext.Current), oRoles.StaffChangeRequest) ||
AuthCheck.CheckUser(new HttpContextWrapper(HttpContext.Current), oRoles.StudentChangeRequest))
{
<span>@Html.ActionLink("Remove", "RemoveGroup", new { id = Group.ID })</span>
}
</td>
</tr>
}
</tbody>
</table>
我确实需要向每个部分视图传递一个IDnum,以加载该用户的当前模型。
现在的问题是…
我是不是最好将组添加到SearchedUser模型中,并在每次向用户添加组时重新加载整个模型?
我不确定我是否理解你的问题。如果您询问如何渲染包含两个具有不同模型的局部视图调用的视图,那么您应该有一个具有包含两个其他视图模型的视图模型的主视图。
class MainViewModel
{
PartialOneViewModel {get;set;}
PartialTwoViewModel {get;set;}
}
class PartialOneViewModel
{
// props
}
class PartialTwoViewModel
{
// props
}
主视图模型应具有:@型号MainView型号
分部应该有自己的视图模型。你的帖子应该同时收到"MainViewModel"和两个部分。