Я работаю над веб-приложением, использующим MVC, и пытаюсь учиться по ходу дела, я все еще новичок в C # и HTML, но я начинаю понимать концепцию.
Приложение должно обрабатывать временные отчеты, где пользователь может создавать временные отчеты и вводить такие вещи, как тип работы и в каком порядке он / она работает, который я смог создать. Несмотря на то, что я хочу иметь возможность добавлять несколько времен запуска и остановки к одному отчету, например:
(простите за смесь шведского и английского ...)
User: Emil
Order: 001
Type: Ordertime
Times:
Start 08:00, Stop 12:00
Start 13:00, Stop 18:30
Start 18:45, Stop 19:30
Start 20:50, Stop 22:10
etc...
Модель:
namespace YttecData.Models
{
public class TidRapportKlocka
{
[Display(Name = "Starttid")]
public DateTime StartTid;
[Display(Name = "Sluttid")]
public DateTime SlutTid;
}
public class TidRapport
{
[Display(Name = "Id")]
public int Id { get; set; }
[Display(Name = "User")]
public String User { get; set; }
[Display(Name = "Order")]
public String Order { get; set; }
[Display(Name = "Tidstyp")]
public TidsTyp Tid { get; set; }
[Display(Name = "Klockslag")]
public List<TidRapportKlocka> StartStopTider = new List<TidRapportKlocka>();
public int StartStopTiderCount = 0;
}
}
Контроллер:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult TidRapportNy(TidRapportEditModel model)
{
if (ModelState.IsValid)
{
var nyTidRapport = new TidRapport
{
User = model.User,
Tid = model.Tid,
Order = model.Order,
StartStopTider = model.StartStopTider
};
nyTidRapport = _tidRapportData.Add(nyTidRapport);
return RedirectToAction(nameof(TidRapportDetaljer), new { id = nyTidRapport.Id });
}
else
{
return View();
}
}
Представление "Показать подробности": (показывает пару временных отчетов, которые я жестко запрограммировал в службе, поскольку она еще не подключена к базе данных, это работает и показывает все время, введенное в отчете!)
@model YttecData.Models.TidRapport
<h2>Tidrapport nr: @Model.Id</h2>
<div>
<label asp-for="Tid"></label>
@Model.Tid
</div>
<div>
<label asp-for="Order"></label>
@Model.Order
</div>
<div>
<label asp-for="User"></label>
@Model.User
</div>
<br />
<h3>Klockslag</h3>
@foreach (var TidRapportKlocka in Model.StartStopTider)
{
<div>
<label>Start:</label>
@TidRapportKlocka.SlutTid.TimeOfDay
<label>Stop:</label>
@TidRapportKlocka.StartTid.TimeOfDay
</div>
}
<a asp-action="TidRapport" asp-controller="TidRapport">Tillbaks till tidrapporter</a>
Представление создания: ( Здесь мне нужна помощь, я не уверен, как многократно вводить один отчет из представления )
@using YttecData.Models
@model YttecData.Models.TidRapport
<h1>Ny tidrapport</h1>
<form method="post">
@*<div asp-validation-summary="All"></div>*@
<div>
<label asp-for="User"></label>
<input asp-for="User" />
<span asp-validation-for="User"></span>
</div>
<div>
<label asp-for="Order"></label>
<input asp-for="Order" />
<span asp-validation-for="Order"></span>
</div>
<div>
<label asp-for="Tid"></label>
<select asp-for="Tid"
asp-items="@Html.GetEnumSelectList<TidsTyp>()"></select>
<span asp-validation-for="Tid"></span>
</div>
<div>
<label>StartTid</label>
<input asp-for="StartStopTider[1].StartTid" />
</div>
<div>
<label>StopTid</label>
<input asp-for="StartStopTider[1].StartTid" />
</div>
<div>
<input type="submit" name="Spara" value="Save" />
</div>
</form>
Приведенный выше код дает мне необходимые элементы управления при запуске приложения, хотя он дает мне возможность добавить только один раз и не сохраняет никаких значений для времени, когда я перехожу к представлению отображения подробностей для недавно созданный отчет. Я пробовал много разных вещей, и в большинстве случаев я сталкиваюсь с проблемой, когда говорится, что я не могу неявно преобразовать void в объект, и я не совсем уверен, куда идти оттуда.
Т.е., если я просто попытаюсь добавить время в представлении создания (без какого-либо ввода из элементов управления html) с этой строкой, я получу ошибку void to object:
@Model.StartStopTider.Add(new TidRapportKlocka { StartTid = new DateTime(2018, 01, 01, 11, 10, 00), SlutTid = new DateTime(2018, 01, 01, 12, 20, 00) })
Любая помощь или общие советы приветствуются!
// Эмиль