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

Posted

技术标签:

【中文标题】将一个模型从局部视图传递到父视图,并将另一个模型绑定到同一个父视图【英文标题】:Pass one model from a partial view to a Parent View and bind another model to the same Parent View 【发布时间】:2015-06-20 15:33:36 【问题描述】:

我有一个情况,可能之前有人问过,但我无法得到它。

我有一个partial view,即_SamplePartial.cshtml,还有一个父视图,即Sample.cshtml。 现在我想在父视图中使用局部视图,以及将父视图与另一个模型绑定。

下面是代码:

public ActionResult Sample()

 Student student=new Student()
  
    ID=101,
    Name="Sam",
    City="NY"
  ;
 return View(student);

示例.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"
;

上述对象也应该存在于视图中,但不应作为模型从局部视图中传递。

请高手指导。

【问题讨论】:

【参考方案1】:

终于找到答案了。

创建了一个 ViewModel。

public class StudentViewModel()

public Student Obj1get;set;
public Student Obj2get;set;

在行动方法:

public ActionResult Sample()

StudentViewModel vm=new StudentViewModel();
vm.Obj1=new StudentID=101,Name="Sam",City="NY";
vm.Obj2=new StudentID=102,Name="Rambo",City="Sydney";
return View(vm);

示例.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)

【讨论】:

以上是关于将一个模型从局部视图传递到父视图,并将另一个模型绑定到同一个父视图的主要内容,如果未能解决你的问题,请参考以下文章

在 knockout.js 中将 observable 从一个视图模型传递到另一个视图模型

将 knockoutjs 视图模型传递给多个 ajax 调用

如何从模型 A 的 CreateView 重定向到模型 B 的另一个 CreateView,同时将关键信息从模型 A 传递到下一个视图?

Extjs 7,如何使用视图模型将动态数据从一个控制器传递到另一个控制器

在部分视图 MVC5 之间传递视图模型

如何将外键从一个视图传递到另一个视图?