用两个局部视图加载和更新视图

本文关键字:加载 视图 更新 新视图 局部 两个 | 更新日期: 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"和两个部分。