使用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在主视图中可能是多余的。
我的组部分视图如下所示:
@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模型中,并在每次向用户添加组时重新加载整个模型吗?
答案 0 :(得分:0)
我不确定我是否理解你的问题。 如果您询问如何呈现包含具有不同模型的两个局部视图调用的视图,那么您应该拥有一个包含2个其他视图模型的视图模型的主视图。
class MainViewModel
{
PartialOneViewModel {get;set;}
PartialTwoViewModel {get;set;}
}
class PartialOneViewModel
{
// props
}
class PartialTwoViewModel
{
// props
}
主视图模型应具有: @model MainViewModel
部分应该有自己的视图模型。 你的帖子应该收到带有两个部分的“MainViewModel”。