Donc ce que j'essaie de faire est de faire une vue avec 2 de mes modèles. Pour que je fait ce viewmodel:Essayer de créer une vue avec 2 modèles donne une erreur
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace TimeTrackerProjectV2.Models
{
public class TimesheetInfoAndTimeSheet_DetailsViewModel
{
public IEnumerable<TimeSheet_Details> Details { get; set; }
public TimeSheetInfo Info { get; set; }
}
}
J'ai une méthode de contrôleur qui retourne mon viewmodel à mon avis comme celui-ci:
public ActionResult Edit(int id)
{
var inf = Repositories.TimeSheetRepository.GetTimesheetInfo(id);
var time = Repositories.Timesheet_DetailsRepo.GetTimeSheetThroughId(id);
var model = new TimesheetInfoAndTimeSheet_DetailsViewModel { Details = time.ToList(), Info = inf };
return View(model);
}
Mon vue ressemble actuellement à ceci:
@model IEnumerable<TimeTrackerProjectV2.Models.TimesheetInfoAndTimeSheet_DetailsViewModel>
@{
ViewBag.Title = "Edit";
}
<h2>Edit</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<dl class="dl-horizontal">
@foreach (var item in Model)
{
<dt>
Month
</dt>
<dd>
@Html.DisplayFor(model =>)
</dd>
<dt>
Year
</dt>
<dd>
@Html.DisplayFor(model => item.Info.Year)
</dd>
<dt>
Year
</dt>
<dd>
@Html.DisplayFor(model => item.Info.Year)
</dd>
<dt>
Status
</dt>
<dd>
@Html.DisplayFor(model => item.Info.StatusUnparsed)
</dd>
<dt>
User
</dt>
<dd>
@Html.DisplayFor(model => item.Info.EmailUser)
</dd>
<dt>
Explanation
</dt>
<dd>
@Html.DisplayFor(model => item.Info.Explanation)
</dd>
}
}
</dl>
<table class="table">
<tr>
<th>
Date
</th>
<th>
Project
</th>
<th>
Task
</th>
<th>
Time Spent
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
foreach(var i in item.Details)
{
<tr>
<td>
@Html.DisplayFor(modelItem => i.DayOfMonth)
</td>
<td>
@Html.DisplayFor(modelItem => i.Project)
</td>
<td>
@Html.DisplayFor(modelItem => i.Task)
</td>
<td>
@Html.DisplayFor(modelItem => i.TimeSpent)
</td>
</tr>
}
}
</table>
Je reçois une erreur car im passi ng un seul objet ModelView pendant que ma vue attend un ennèlement. Mais quand je change de sorte que ma vue attend un seul objet je ne peux pas appeler la valeur de mes entités d'objet dans mon ViewModel parce que je ne peux plus faire un foreach avec mon modèle de vue. J'espère qu'il fait ce que j'essaie de dire. Quelle est la meilleure façon d'y parvenir?
Where i got my controller code example from
d'abord, qu'est-ce que c'est? '@ Html.DisplayFor (model =>)' –
Quelle erreur obtenez-vous? –
Vous devez changer la déclaration à '@model TimesheetInfoAndTimeSheet_DetailsViewModel' et utiliser juste' @foreach (var item dans Model.Details) '(pas un' foreach (var item dans Model) ') –