【问题标题】:Show data from other model in my View在我的视图中显示来自其他模型的数据
【发布时间】:2016-02-12 13:00:27
【问题描述】:

当我创建付款时,我想在我的付款索引视图中显示 ClientName。我从另一个名为“Clients”的表中获取客户名称

支付模式:

public class Payments
{
    [Key]
    public int PaymentsId { get; set; }

    public int ClientsId { get; set; }
    [ForeignKey("ClientsId")]
    public virtual Clients Clients { get; set; }
    public String Paymentnumber { get; set; }
    public DateTime PaymentDate { get; set; }
    public Decimal Amount { get; set; }
    public Decimal Discount { get; set; }
    public String Reference { get; set; }
    public String Bank { get; set; }

}

支付控制器:

// GET: Payments
public ActionResult Index()
{
    return View(db.PaymentsList.ToList());
}

支付索引视图:

@model IEnumerable<localuh.Models.Payments>
....
<table class="table">
<tr>
    <th>@Html.DisplayNameFor(model => model.Paymentnumber)</th>
    <th>@Html.DisplayNameFor(model => model.PaymentDate)</th>
    <th>@Html.DisplayNameFor(model => model.Amount)</th>
    <th> @Html.DisplayNameFor(model => model.Discount)</th>
    <th>@Html.DisplayNameFor(model => model.Reference)</th>
    <th>@Html.DisplayNameFor(model => model.Bank)</th>
    <th></th>
    <th></th>
</tr>

@foreach (var item in Model) {
<tr>
    <td>@Html.DisplayFor(modelItem => item.Paymentnumber)</td>
    <td>@Html.DisplayFor(modelItem => item.PaymentDate)</td>
    <td>@Html.DisplayFor(modelItem => item.Amount)</td>
    <td>@Html.DisplayFor(modelItem => item.Discount)</td>
    <td>@Html.DisplayFor(modelItem => item.Reference)</td>
    <td>@Html.DisplayFor(modelItem => item.Bank)</td>
    <td>
        @Html.ActionLink("Edit", "Edit", new { id=item.PaymentsId }) |
        @Html.ActionLink("Details", "Details", new { id=item.PaymentsId }) |
        @Html.ActionLink("Delete", "Delete", new { id=item.PaymentsId })
    </td>
</tr>
}

</table>

那么,我该怎么做呢?

【问题讨论】:

  • @StephenMuecke 我更改所有建议
  • 需要休息一下,但是你能展示一下Payment 的模型吗(如果你设置正确,它应该有一个int ClientID 属性和一个virtual Client Client 属性),我会30 分钟后看看。
  • Payment 模型(db.PaymentsList 返回的那个),而不是PaymentsViewModel
  • 只需在表中添加另一列&lt;td&gt;@Html.DisplayFor(modelItem =&gt; item.Clients.Name)&lt;/td&gt; 假设Name 是您要显示的Clients 的属性。旁注:当您的属性与单个客户相关时,您的属性被命名为 Clients(复数)令人困惑 - 建议您考虑重命名
  • 它可以工作...你能解释一下 virtual 在这种情况下做什么吗?它创建了我的客户 ID 或类似的实例?

标签: c# asp.net-mvc


【解决方案1】:

您的 Payments 模型包含 Clients 的 virtual 属性(EF 将“延迟加载”,因此您只需添加另一个表列来显示客户端的名称。假设您的 @987654324 @model 有一个属性public string Name { get; set; },那么就是

<td>@Html.DisplayFor(modelItem => item.Clients.Name)</td>

旁注:建议您将属性重命名为 Client,而不是 Clients,这表明它是一个集合。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 2020-09-06
    相关资源
    最近更新 更多