div*_*vya 2 asp.net-mvc model view razor
我正在尝试将两个模型(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; }
}
}
Run Code Online (Sandbox Code Playgroud)
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; }
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试将 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>
}
Run Code Online (Sandbox Code Playgroud)
但是,我无法通过它。任何人都可以帮助我解决这个问题吗?
将 ViewModel 用于您的视图,它将解决您的问题::
class CommonViewModel
{
Model1 model1;
Model2 model2;
}
Run Code Online (Sandbox Code Playgroud)
其中 Model1 和 Model2 是您的模型 aS::
public class Model1
{
public int ID{get;set;}
public string Name{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
和 Model2 一样:
public class Model2
{
public int ID{get;set;}
public string Name{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
并在您的视图中执行强类型化::
@model ProjectName.CommonViewModel
Run Code Online (Sandbox Code Playgroud)
在这里,您可以将 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>
}
Run Code Online (Sandbox Code Playgroud)