将一个模型从局部视图传递到父视图并将另一个模型绑定到同一父视图

Pass one model from a partial view to a Parent View and bind another model to the same Parent View

我有一个情况,可能之前有人问过,但是我没有得到。

我有一个 partial view_SamplePartial.cshtml 和一个父视图 Sample.cshtml。 现在我想在父视图中使用局部视图,并将父视图与另一个模型绑定。

代码如下:

public ActionResult Sample()
{
 Student student=new Student()
  {
    ID=101,
    Name="Sam",
    City="NY"
  };
 return View(student);
}

Sample.cshtml:

@model MultipleModels.Models.Student
@{
    ViewBag.Title = "Sample";
}
<h2>Sample</h2>
@Html.Partial("_SamplePartial",Model)

_Samplepartial.cshtml:

@model MultipleModels.Models.Student
<table>
    <tr><td>@Model.StudentID</td></tr>
    <tr><td>@Model.StudentName</td></tr>
    <tr><td>@Model.StudentCity</td></tr>
</table>

现在我希望另一个学生对象也绑定到视图,但它不应该来自局部视图。 例如:

Student stdObj=new Student()
{
ID=999,
Name="Rambo",
City="Sydney"
};

上面的对象也应该出现在视图中,但它不应该作为局部视图的模型传递。

请高手指点

终于找到答案了。

创建了一个 ViewModel。

public class StudentViewModel()
{
public Student Obj1{get;set;}
public Student Obj2{get;set;}
}

在操作方法中:

public ActionResult Sample()
{
StudentViewModel vm=new StudentViewModel();
vm.Obj1=new Student{ID=101,Name="Sam",City="NY"};
vm.Obj2=new Student{ID=102,Name="Rambo",City="Sydney"};
return View(vm);
}

Sample.cshtml:

@model MultipleModels.ViewModels.StudentViewModel
@{
    ViewBag.Title = "Sample";
}
<h2>Sample</h2>
<p><b>Directly</b></p>
<table>
    <tr>
        <td>@Model.Obj1.StudentID</td>
        <td>@Model.Obj1.StudentName</td>
        <td>@Model.Obj1.StudentCity</td>
    </tr>
</table>
@Html.Partial("_SamplePartial",@Model.Obj2)