Могу ли я добавить поле из другой модели в представление в MVC5 - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть вид, связанный с моделью: ICS_Orders. это представление используется для того, чтобы пользователи печатали форму с записями.

Пользователи запросили наличие нового поля в представлении для печати. Это поле не является частью модели ICS_Orders, а скорее ICS_Supplies. Кажется, я не могу найти какую-либо информацию о том, как заставить это поле отображаться на виде - из другой модели.

Код вида:

@model IEnumerable<ICS20web.Models.ICS_Orders>

<table class="table">
<tr>
<th>PO / Requisition Number</th>
<th>Units Ordered</th>
<th>Supply Name</th>
<th>**New Field from Different Model Here**  </th>
</tr>

@foreach (var item in Model)
        {
    <tr>
    <td>@Html.DisplayFor(modelItem => item.RequisitionNumber)</td>
    <td>@Html.DisplayFor(modelItem => item.UnitsOrdered)</td>
    <td>@Html.DisplayFor(modelItem => item.Supply)</td>
    <td>**New Field Display Resuls** <td>
    </tr>
         }
     </table>

Как вы можете видетьпредставление для

@model IEnumerable<ICS20web.Models.ICS_Orders>

Новое запрошенное поле (Old_ItemID) предназначено для:

@model IEnumerable<ICS20web.Models.ICS_Supplies> 

(WHERE item.Supply (из текущей модели: ICS_Orders) = item.Description (вновая модель: ICS_Supplies))

Есть ли способ сделать это? Или мне нужно пройти весь путь назад и создать представление в моей базе данных и новую модель?

РЕДАКТИРОВАТЬ:

Ниже моя модель ICS_Orders

public class ICS_Orders
{      
    [Key]
    public int? LineID { get; set; }

    [Required]
    public string RequisitionNumber { get; set; }

    public int SuppliesID { get; set; }

    [Required]
    public int UnitsOrdered { get; set; }

    public string Supply { get; set; }

    public Nullable<int> UnitsDelivered { get; set; }

}

Как добавить свойство для хранения поля ICS_Supplies 'Old_ITemID'? Я попробовал следующее, и это не сработало.

public virtual DbSet<ICS_Supplies> ICS_Order { get; set; }

public string Old_ItemID { get; set; }

И что мне нужно сделать в моем контроллере, чтобы «установить это», как было предложено.

Ответы [ 2 ]

1 голос
/ 13 ноября 2019

У вас есть несколько вариантов.

  1. Создайте новый список OrdersWithSupplies в контроллере и используйте его в качестве модели. Вы должны заполнить класс OrderWithSupply данными о заказах и поставках.

  2. Создать новую модель представления, которая содержит как список заказов, так и список поставок. Если они равны по длине, вы можете просмотреть один из них и использовать текущий индекс для получения правильных данных о поставках.

Для иллюстрации:

@for(var i=0;i<Model.Orders.Length;i++)
        {
    <tr>
    <td>@Html.DisplayFor(m => m.Orders[i].SomeOrderProp)</td>
    <td>@Html.DisplayFor(m => m.Supplies[i].SomeSupplyProp)</td>

Если вы четко покажете свои модели и контроллер, я смогу еще более сузить этот ответ:)

0 голосов
/ 13 ноября 2019

в действии сохранит результаты отображения нового поля в ViewBag.Results, как показано ниже

ViewBag.Results = New Field Display Resulst.Tolist();

Также в бритве

<ul>
@foreach (var Result in ViewBag.Results )
{
    <li>@Result</li>
}
</ul>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...