使用两个partialview加载和更新视图

时间:2014-04-11 16:21:07

标签: c# asp.net-mvc asp.net-mvc-4 razor

使用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模型中,并在每次向用户添加组时重新加载整个模型吗?

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解你的问题。 如果您询问如何呈现包含具有不同模型的两个局部视图调用的视图,那么您应该拥有一个包含2个其他视图模型的视图模型的主视图。

class MainViewModel
{
PartialOneViewModel {get;set;}
PartialTwoViewModel {get;set;}
}

class PartialOneViewModel
{
// props
}

class PartialTwoViewModel
{
// props
}

主视图模型应具有: @model MainViewModel

部分应该有自己的视图模型。 你的帖子应该收到带有两个部分的“MainViewModel”。