【问题标题】:Two forms, one page. View Model, Model or something else?两种形式,一页。查看模型、模型还是其他?
【发布时间】:2011-08-29 19:25:29
【问题描述】:

我有一个处理上传图像的组件,它以自己的形式工作正常,它是一个绑定到视图模型的视图,映射到控制器中的主模型,同样我有一个绑定的标准视图到一个简单的视图模型,然后映射到主模型并保存。

因此,这两个页面都可以作为单独的页面正常工作,但是,我热衷于将它们呈现给同一页面中的用户 - 我完全卡住了。

这一页需要两个不同的视图模型,只是不知道如何继续,以及如何组合它们。

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

摆脱ModelState.IsValid,应用程序运行良好,但作为一个MVC新手,我对此感到有些不安,想知道是否有人可以帮助我?

(如果这确实需要一个新的 ViewModel,每个表单都有一个 ViewModel,如果你能告诉我一个好的命名约定,因为我尝试过的少数几个看起来真的很乱!)

【问题讨论】:

    标签: c# model-view-controller model viewmodel


    【解决方案1】:

    您可以尝试使用局部视图。

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

    然后在 FormA.cshtml 中,您将拥有:

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

    FormB 类似

    【讨论】:

    • 我不得不重做/重新设计一大段代码,但我可以看到这是一个巨大的改进,我应该一直使用它......命名约定正在推动我疯狂,因为现在有额外的模型/复杂性,但是,这只是语义 - 主要的事情实际上是有效的。谢谢!
    • 我喜欢使用局部视图的一件事是,当您想要更改某些内容时,您只需找到该局部视图并在那里进行更改,而如果它们都在同一页面上,您将不得不滚动到处找。
    猜你喜欢
    • 2019-05-07
    • 2013-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多