2011-05-20 71 views
2

我有一个处理上传图像的组件,它在它自己的窗体中工作的很好,它是绑定到视图模型的视图,映射到控制器中的主模型,同样我也有一个标准视图绑定到一个简单的视图模型,然后映射到主模型并保存。两种形式,一页。查看模型,模型或其他东西?

因此,这两个工作都很好,但是,我热衷于将它们呈现给用户在同一页面 - 我完全被卡住了。

我有两个不同的视图模型需要这一页,只是不知道如何前进,以及如何将它们合并。

我已经尝试制作一个新的Viewmodel,它基本上包含了另外两个View Models,但是当任何一个表单提交时,ModelState.IsValid总是返回false,因为其他字段中的一些必需数据不存在。

通过摆脱ModelState.IsValid,应用程序工作正常,但作为一个MVC新手,我感到有点不安,这只是想知道如果有人可以帮助我吗?

(如果这确实需要有一个视图模型为每个表单一个新视图模型,奖励积分,如果你能告诉我,作为为数不多的我已经尝试只是看起来很凌乱了良好的命名约定!)

回答

4

你可以试试使用部分视图。

<div> 
    @Html.Partial("FormA") 
</div> 
<div> 
    @Html.Partial("FormB") 
</div> 

然后在FormA.cshtml,你必须:

@model Namespace.FormAViewModel 
<form> </form> 

然后换FormB

+0

我不得不重做/重新设计的代码,一个巨大的部分相似,但我可以看到这是一个巨大的改进,我应该一直在使用......命名约定让我非常生气,因为现在有了额外的模型/复杂性,但这只是语义 - 主要的是实际工作。谢谢! – Wil 2011-05-20 23:37:26

+0

我喜欢使用偏色的一件事是,当你想改变某些东西时,你只需找到该偏好视图并在那里改变它,而如果它在同一页面上,你将不得不四处寻找它。 – 2011-05-21 22:25:00