将一个模型从局部视图传递到父视图,并将另一个模型绑定到同一个父视图
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 传递到下一个视图?