0

我有一个 Partialview,它有两个不同的视图。两个不同的视图使用不同的视图模型。在其中一个视图上,代码是:

视图1:

@model StudentsViewModel
......
.....
@Html.Partial("_StudentOtherInformation")

部分视图

@model StudentsViewModel
@if (Model.StudentList != null)
{
<input type="hidden" id="firstStudent" value= "@Model.StudentList.ElementAt(k-1).StudentID" />
}

视图2:

@model SearchViewModel
....
@Html.Partial("_StudentOtherInformation")

从上面的代码部分视图需要访问view1的viewmodel。我收到异常说部分视图与视图模型混淆了。我做了一些研究,发现一种方法是创建一个包含两个视图模型的父视图模型。但问题是两个视图模型位于不同的命名空间中。有什么方法可以将各个视图模型从每个视图传递给部分视图?

4

1 回答 1

1

您可以将 ViewModel 作为第二个参数传递:

视图1:

@model StudentsViewModel
......
.....
@Html.Partial("_StudentOtherInformation", model)

视图2:

@model SearchViewModel
....
@Html.Partial("_StudentOtherInformation", model)

但是,这不允许您传递两种不同的类型。

你可以做的只是创建一个基类,把公共属性放在那里,然后从这个基类继承你的两个 ViewModel。它们位于不同的命名空间中是没有问题的。您只需要引用正确的命名空间:

public class ParentViewModel
{
    public List<Student> StudentList{ get; set; }
}

public class StudentsViewModel : your.namespace.ParentViewModel
{
     // other properties here
}

public class SearchViewModel: your.namespace.ParentViewModel
{
     // other properties here
}

然后,您的局部视图应该被强输入到基类:

部分视图

@model ParentViewModel
@if (Model.StudentList != null)
{
<input type="hidden" id="firstStudent" value= "@Model.StudentList.ElementAt(k-1).StudentID" />
}
于 2013-05-15T09:33:10.323 回答