所以我的视图开始了这样MVC显示属性
@model ApplicationName.Models.A
并取入从A所以我的数据库元素如果我是使用@ Html.DisplayFor(型号=> model.Whatever)它会在我的视图中显示数据库中的那个元素。
但是我有另一个属性,我想也显示在同一页/视图。但它在Models.B
所以我注定要与落得如此
@ Html.DisplayFor(型号=> model.WhateverFromB)
所有帮助非常感谢
所以我的视图开始了这样MVC显示属性
@model ApplicationName.Models.A
并取入从A所以我的数据库元素如果我是使用@ Html.DisplayFor(型号=> model.Whatever)它会在我的视图中显示数据库中的那个元素。
但是我有另一个属性,我想也显示在同一页/视图。但它在Models.B
所以我注定要与落得如此
@ Html.DisplayFor(型号=> model.WhateverFromB)
所有帮助非常感谢
您应该使用一个ViewModel
为此。当您在视图中需要多个模型时,这是一个好方法。包括您在ViewModel类中使用的模型所需的内容,并在视图中而不是模型中引用它。
这将让你与ViewModels
http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-3
ViewBags
和ViewData
去工作,但也有适当的时间使用每个。 http://rachelappel.com/when-to-use-viewbag-viewdata-or-tempdata-in-asp.net-mvc-3-applications
您应该使用封装了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
,或两个数据库对象之间的语义差别每个属性是不是认为重要的是,你可能会考虑执行以下操作:
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)
+1避免。当你想显示/从用户接收数据时,你应该使用特定的ViewModel,然后将所需的数据转换成域对象。 – Xenolightning