asp.net mvc - 如何将多个视图模型绑定到视图

时间:2017-07-25 14:20:45

标签: c# asp.net asp.net-mvc

我是c#的新手所以请原谅这个愚蠢的问题。我正在使用asp.net mvc创建一个webapp。在导航栏上,我有一个按钮,可以显示包含表单的模态。现在,这一切都在_Layouts.cshtml共享视图中完成。为了捕获表单帖子,我使用了ViewsModel,然后将其传递给控制器​​进行处理。现在的问题是,除非我使用单独的共享视图,否则会将该模型加载到webapp中加载的每个视图中。现在这阻止我将模型从控制器传递回视图。

目前我已经创建了一个名为MasterViewModel的模型,该模型将其他视图模型作为属性,但这仍然阻止我将模型传递给视图...

有没有人对如何解决这个问题有任何建议?

1 个答案:

答案 0 :(得分:0)

是的!你当然可以!

有许多方法,但我最喜欢2种。

1。)ViewBag

使用这个很简单,您只需将控制器中的视图包设置为Viewbag.Example = YourViewModelHere

的行。

然后通过说@Viewbag.Example.Attribute

在视图上访问它

2.。部分视图

另一个好方法是保持您的架构井井有条,每个视图只有一个视图模型。 (我更喜欢这种方法

通过这种方式,您可以坚持将单个视图模型交付到单个页面的方式。出于某种原因,我倾向于使用这种方式,但一个不一定比另一个更好。最后,它更受青睐。

3。)Wrapper类

将视图模型包装在父类中,并将parrent类作为视图模型传递。这将允许您访问这些单独的视图模型,例如:

@Model.ViewModelA
@Model.ViewModelB

以个别为例以不同的方式查看此帖子。我穿上鞋子时帮助了我:https://stackoverflow.com/a/4765113/5874935