Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在一个视图中有两个模型的方法是否可行?_C#_Asp.net Mvc_Razor - Fatal编程技术网

C# 在一个视图中有两个模型的方法是否可行?

C# 在一个视图中有两个模型的方法是否可行?,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,是否可以在一个视图中放置两个模型?我的页面在一个模型上运行良好,但是当我尝试在代码下面添加另一个模型行时,我的代码开始出现一些错误: @model ProjectShop.Models.Delivery 在添加上述行之前,我的代码如下所示: @model ProjectShop.Models.Products @{ ViewBag.Title = "Products"; Layout = "~/Views/Shared/_ProductLayout.cshtml"; } <p>

是否可以在一个视图中放置两个模型?我的页面在一个模型上运行良好,但是当我尝试在代码下面添加另一个模型行时,我的代码开始出现一些错误:

@model ProjectShop.Models.Delivery
在添加上述行之前,我的代码如下所示:

@model ProjectShop.Models.Products

@{
ViewBag.Title = "Products";
Layout = "~/Views/Shared/_ProductLayout.cshtml";
 }

<p>@Html.DisplayFor(model => model.productname) </p>
编辑:

在我的html文件中:

@model IEnumerable<ProjectShop.ViewModels.ProductDelivTimes>
@model IEnumerable
编辑:

@model IEnumerable
@{
Layout=“~/Views/Shared/_Layout.cshtml”;
var grid=新的WebGrid(模型,行页面:5,默认排序:“名称”);
ViewBag.Created=TempData[“ProductCreated”];
ViewBag.Created=TempData[“ProductDeleted”];
}
@grid.GetHtml(
表样式:“网格”,
headerStyle:“gridhead”,
行样式:“网格行”,
交替行样式:“网格行”,
模式:WebGridPagerModes.All,
列:grid.columns(
grid.Column(“图像”,格式:@,样式:“图像”),
grid.Column(“Products”,格式:@@Html.Raw(item.Products.name.Substring(0,item.Products.name.IndexOf(“.”+1)),样式:“Products”)
))

< /代码> 也许编写一个包含两个数据源模型的包装模型,并在需要时决定从哪个数据获取数据?

如果要将多个域实体作为视图的一部分,请考虑创建一个结合两个数据源模型

的视图模型。 类似(只是伪代码):

所以你会

@model ProjectShop.Models.ProductDeliveryViewModel

@Html.DisplayFor (model=> model.ProductModel.Property)
@Html.DisplayFor (model=> model.DeliveryModel.Property)

我所在的团队将使用ViewModel类将两个业务对象包装成一个视图可以使用的对象。它可以简单到每个对象都有一个属性。

在过去,我通过使用第三个“容器”模型实现了这一点

public class MainModel 
{

  public ProductModel productModel {get;set;}
  public DeliveryModel deliveryModel {get;set;}

}

数据总是需要的,所需的另一个模型将在页面上显示每个产品的交付日期。是的,所以只需将它们组合成一个“包装器”模型,该模型知道如何组合来自两个不同模型的数据以提供给显示器谢谢。我试图创建我的视图模型,但是当我试图将我的两个模型都输入到类中时,会出现语法错误:models.Products;和模型。交付;请你给个建议好吗?谢谢我很抱歉我不明白,你能用你的ViewModel更新你的问题吗?你需要用类型和名称声明它,这样它将是公共模型;公共模型。交付模型;谢谢,viewmodel现在似乎可以工作了,我已经更改了html页面顶部的模型行(参见原始帖子)。然而,我现在得到以下错误:传入字典的模型项的类型为“System.Data.Objects.ObjectQuery
1[ProjectShop.Models.Products]”,但此字典需要类型为“System.Collections.Generic.IEnumerable
1[ProjectShop.ViewModels.Delivery]”的模型项。这是因为我的web网格指向错误的位置吗?(请参阅原始帖子)。您是否更改了视图->顶部的模型,即@model ProjectShop.Models.Delivery
@model IEnumerable<ProjectShop.ViewModels.PerformanceTimes>
@{

Layout = "~/Views/Shared/_Layout.cshtml";
var grid = new WebGrid(Model, rowsPerPage: 5, defaultSort: "Name");

ViewBag.Created = TempData["ProductCreated"];
ViewBag.Created = TempData["ProductDeleted"];
}

@grid.GetHtml(
    tableStyle: "grid",
    headerStyle: "gridhead",
    rowStyle: "gridRow",
    alternatingRowStyle: "gridRow",
    mode: WebGridPagerModes.All,
    columns: grid.Columns(

grid.Column("Image", format: @<text><img src="@item.image"  alt=""   width="84px" height="128px"/></text>, style: "Image"),


grid.Column("Products", format: @<text>@Html.Raw(item.Products.name.Substring(0, item.Products.name.IndexOf(".") + 1))</text>, style: "Products")


                    ))
ProductDeliveryViewModel
{
   // ProductModel
   // DeliveryModel
}
@model ProjectShop.Models.ProductDeliveryViewModel

@Html.DisplayFor (model=> model.ProductModel.Property)
@Html.DisplayFor (model=> model.DeliveryModel.Property)
public class MainModel 
{

  public ProductModel productModel {get;set;}
  public DeliveryModel deliveryModel {get;set;}

}