c# - C# 在一个视图中使用来自 2 个模型的上下文
问题描述
我需要帮助在一个视图中使用来自 2 个模型的上下文。我需要使用ZanrID
和Ime
从ZanrModel.cs
这是ZanrModel.cs
代码:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;
namespace WebApplication1.Models
{
[Table("Zanr")]
public class ZanrModel
{
[Key]
public int ZanrID { get; set; }
public string Ime { get; set; }
}
}
我想使用ZanrdID
并且Ime
在这个视图中我使用KnjigaModel.cs
@model IEnumerable<WebApplication1.Models.KnjigaModel>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index</h2>
<a href="/Knjiga/Create" class="btn btn-warning">Dodaj novu knjigu</a>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.InventarniBroj)
</th>
<th>
@Html.DisplayNameFor(model => model.Pisac)
</th>
<th>
@Html.DisplayNameFor(model => model.Naslov)
</th>
<th>
@Html.DisplayNameFor(model => model.GodinaIzdavanja)
</th>
<th>
@Html.DisplayNameFor(model => model.MestoIzdavanja)
</th>
<th>
</th>
<th>
</th>
<th>
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.InventarniBroj)
</td>
<td>
@Html.DisplayFor(modelItem => item.Pisac)
</td>
<td>
@Html.DisplayFor(modelItem => item.Naslov)
</td>
<td>
@Html.DisplayFor(modelItem => item.GodinaIzdavanja)
</td>
<td>
@Html.DisplayFor(modelItem => item.MestoIzdavanja)
</td>
<td>
<a href="/Knjiga/Izmeni/@item.KnjigaId" class="btn btn-warning">Edit</a>
</td>
<td>
<a href="/Knjiga/Details/@item.KnjigaId" class="btn btn-primary">Details</a>
</td>
<td>
<a href="/Knjiga/Delete/@item.KnjigaId" class="btn btn-danger">Delete</a>
</td>
</tr>
}
</table>
是的,我想dropdown menu
在Knjiga/Create.cshtml
用户可以选择Zanr
他们想要使用它的地方创建。我有数据库Knjiga
,Zanr
这里是它的图片:
提前致谢 !!!
解决方案
我相信最好的方法是创建一个 ViewModel 对象来包含两个模型对象的组合。
将模型直接放在视图上并不是一个好习惯。
//New class outside the view.
Public class KnjigaZanrVM
{
IEnumerable<KnjigaModel> Knjiga {get}
IEnumerable<ZanrModel> Zanr {get}
}
//on the View
@model WebApplication1.ViewModel.KnjigaZanrVM
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
...
@foreach (var item in Model.Knjiga)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.InventarniBroj)
</td>
<td>
...
foreach (var item in Model.Zanr)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.ZanrID)
</td>
<td>
...
请参阅此链接:
https://www.c-sharpcorner.com/article/managing-data-with-viewmodel-in-asp-net-mvc/
https://www.aspsnippets.com/Articles/Pass-Send-Object-from-View-to-Controller-in-ASPNet-MVC.aspx
推荐阅读
- python - 在列表中搜索字母
- c# - 如何知道 RabbitMQ 应用程序是否已启动
- c - Using scanf funciton in printf to get values
- android - 从 CompositeDisposable RXJava 获取价值 - Android
- javascript - 谷歌表格 - 从列中生成所有可能的字符串组合
- xml - 具有多个项目的序列的 XPath 子字符串?
- python - Python、RPi 和 GPIO - 控制引擎
- javascript - onClick 使用反应从另一个 JS 文件调用函数
- python - 在交叉评估 2 个数据集时根据条件在列中应用值
- python - 在条形图中的某个点绘制一条红线(python3 matplotlib)