如何使用 asp.net MVC razor 将两个模型组合成一个模型并将其传递给视图

2024-01-30

我试图将两个模型(tblCategories 和 tblProducts)组合成一个模型并将其传递给视图。但没能做到。

tblCategory.cs主模型有以下数据

namespace ScaffoldCreate.Models
{
    using System;
    using System.Collections.Generic;

    public partial class tblCategory
    {
        public int CategoryId { get; set; }
        public string Name { get; set; }
    }
}

tblProduct.cs

public partial class tblProduct
    {
        public int ProductId { get; set; }
        public int ProductName { get; set; }
        public int CategoryId { get; set; }
        public int SubCategoryId { get; set; }
        public string ProductDescription { get; set; }
        public string StockStatus { get; set; } 
        public IList<tblCategory> CategoryName { get; set; }
    }
}

我尝试将 tblCategory 放入 tblProduct 中,并尝试在索引页中检索它,如下所示:

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.CategoryName.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ProductId)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.CategoryId)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.SubCategoryId)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ProductName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ProductDescription)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.StockStatus)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
        </td>
    </tr>
}

但是,我没能度过难关。有人可以帮我解决这个问题吗?


使用 ViewModel 作为您的视图将解决您的问题::

class CommonViewModel 
{

   Model1 model1;
   Model2 model2;
}

其中 Model1 和 Model2 是您的模型 aS::

public class Model1 
{
  public int ID{get;set;}
  public string Name{get;set;}
}

和 Model2 一样::

public class Model2 
{
  public int ID{get;set;}
  public string Name{get;set;}
}

在你的视图中,你可以将其作为强类型::

@model ProjectName.CommonViewModel

在这里您可以将 Model1 用作: 您也可以将模型传递给另一个部分视图,并且也可以在同一视图中使用:

@Html.Partial("_PartialViewName",Model.Model1)

@foreach (var item in Model.Model2)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.CategoryName.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ProductId)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.CategoryId)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.SubCategoryId)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ProductName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ProductDescription)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.StockStatus)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
        </td>
    </tr>
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 asp.net MVC razor 将两个模型组合成一个模型并将其传递给视图 的相关文章

随机推荐