将ViewModel传递给局部视图的Asp.net-mvc方法

3
这可能很蠢,但我就是想不明白…… 问题如下: 我有两个模型,分别是A和B。
class A
{
    B b = new B();
}

class B
{
    ...
}

现在,我有一个B的ViewModel(但没有A的)。
因此,现在我有一个强类型为A的视图。它调用另一个部分视图B来呈现B的所有属性。但是,现在如何将B的ViewModel传递给部分视图?我可以通过调用Model.b来传递模型,但无法传递视图模型!

简单的回答是否定的?我会抛出异常。 - Satpal
@Satpal 但是接下来该怎么办呢?我必须使用ViewModel。 - Aditi
简单地说,你需要将“B”模型映射到“ViewModel”。你必须定义映射器或转换器并尝试使用它。在“B”模型中定义一个方法,该方法会将其转换并返回给你“ViewModel”,然后你可以传递该“ViewModel”。 - Satpal
@Satpal 好的,那正是我需要做的事情。但是我没有定义映射器或转换器。而且谷歌搜索只会给出大量关于 AutoMapper 的页面……而我不想使用它。有任何关于此的示例代码吗? - Aditi
3个回答

1
在类A中将类B作为属性引入。因此,现在您可以使用类B作为 Model.bModel
class A
{
    public B bModel { get; set; }
}

class B
{

}

1
您可以通过ViewBag传递B。在控制器中添加:
ViewBag.dataB = B;

然后,您可以使用以下方式使用模型呈现部分视图:
@Html.Partial("PartialName", ViewBag.dataB)

或者你可以添加一个getter属性来访问B并使用它来呈现部分视图。

1

你需要扩展你的一个ViewModel,使其包含你想要访问的所有内容。然后根据你是在正常视图还是部分视图中,只需访问它的不同组件即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接