C# 来自另一个模型的MVC显示属性

C# 来自另一个模型的MVC显示属性,c#,asp.net-mvc,C#,Asp.net Mvc,所以我的观点是这样开始的 @model ApplicationName.Models.A 并从中获取my database元素,因此如果我使用@Html.DisplayFor(model=>model.Whatever),它将在我的视图中显示数据库中的元素 但是,我还有另一个属性,我希望它也显示在同一页面/视图上。但是它是在模型中 所以我必须以这个结束 @DisplayFor(model=>model.WhateverFromB) 非常感谢所有帮助您应该为此使用ViewModel。当您在视图中

所以我的观点是这样开始的

@model ApplicationName.Models.A
并从中获取my database元素,因此如果我使用@Html.DisplayFor(model=>model.Whatever),它将在我的视图中显示数据库中的元素

但是,我还有另一个属性,我希望它也显示在同一页面/视图上。但是它是在模型中

所以我必须以这个结束

@DisplayFor(model=>model.WhateverFromB)


非常感谢所有帮助

您应该为此使用
ViewModel
。当您在视图中需要多个模型时,这是一个很好的方法。从ViewModel类中使用的模型中包含所需内容,并在视图中而不是模型中引用它

这将帮助您使用
ViewModels

ViewBags
ViewData
将起作用,但有适当的时间使用它们。

为此,您应该使用
视图模型。当您在视图中需要多个模型时,这是一个很好的方法。从ViewModel类中使用的模型中包含所需内容,并在视图中而不是模型中引用它

这将帮助您使用
ViewModels

ViewBags
ViewData
将起作用,但有适当的时间使用它们。

您应该使用一个视图模型,该模型封装了
a
B
。例如:

class MyViewModel
{
    public ApplicationName.Models.A A {get; set;}
    public ApplicationName.Models.B B {get; set;}
}
然后将此单视图模型传递给控制器。然后,您当然可以访问您的属性,如:

@Html.DisplayFor(m => m.A.Whatever)
@Html.DisplayFor(m => m.B.WhateverFromB)

同样,如果不需要从<代码> A/<代码>和<代码> B/COD>中的每个属性,或者两个数据库对象之间的语义差异对视图不重要,则可以考虑执行以下操作:

class MyViewModel
{
    public object Whatever {get; set;}
    public object WhateverFromB {get; set;}
}

填充视图模型的各个特性并相应地使用。当然,您可以使用两者的组合,包括完整的
a
WhateverFromB

您应该使用一个视图模型来封装
a
B
。例如:

class MyViewModel
{
    public ApplicationName.Models.A A {get; set;}
    public ApplicationName.Models.B B {get; set;}
}
然后将此单视图模型传递给控制器。然后,您当然可以访问您的属性,如:

@Html.DisplayFor(m => m.A.Whatever)
@Html.DisplayFor(m => m.B.WhateverFromB)

同样,如果不需要从<代码> A/<代码>和<代码> B/COD>中的每个属性,或者两个数据库对象之间的语义差异对视图不重要,则可以考虑执行以下操作:

class MyViewModel
{
    public object Whatever {get; set;}
    public object WhateverFromB {get; set;}
}

填充视图模型的各个特性并相应地使用。当然,您可以将两者结合使用,包括完整的
a
以及
WhateverFromB

实际上,您应该创建一个包含所有所需属性的ViewModel,并且可以从多个模型填充该ViewModel。然后使用ViewModel作为MVC页面中的“模型”

不过,我想回答你的问题。只需编写一个额外的Html.Display条目

在控制器中

ViewBag.WhateverFromB = b_obj;
然后在你看来

@Html.Display(ViewBag.WhateverFromB)

实际上,您应该创建一个包含所有所需属性的ViewModel,并且可以从多个模型填充该ViewModel。然后使用ViewModel作为MVC页面中的“模型”

不过,我想回答你的问题。只需编写一个额外的Html.Display条目

在控制器中

ViewBag.WhateverFromB = b_obj;
然后在你看来

@Html.Display(ViewBag.WhateverFromB)

+1避免在视图中使用域对象。当您希望向用户显示/接收数据时,应使用特定的视图模型,然后将所需数据转换为域对象。+1避免在视图中使用域对象。当您希望向用户显示/接收数据时,应使用特定的ViewModels,然后将所需数据转换为域对象。