Ich habe eine Buchungsseite mit einer Tabelle mit einer Liste von Buchungen. Jede Zeile hat eine Schaltfläche, mit der die Buchung bearbeitet werden kann. Wenn Sie auf diese Schaltfläche klicken, wird ein modales Popup-Formular angezeigt, das JavaScript mit einer Reihe von Feldern verwendet. Ich übergebe die ID
der Buchung in die Kopfzeile, die gut funktioniert. Die BookingModel
hat eine Liste von BookingViewModels
, wo die Daten gespeichert sind.Überschreiben von Formulardaten mit Werten
Ich versuche, den Wert der Felder als die Werte in der Buchung Modell, d. H. @Value = @item.Date
, aber die Daten in der Box nicht überschrieben wird, aber wenn ich das Datum unter sich selbst ausdrucken wird es richtig gedruckt.
Wie kann ich die Daten in der Box drucken?
Modelle
public class BookingViewModels
{
public List<BookingViewModel> BookingModel { get; set; }
/// <summary>
/// Date
/// </summary>
[DataType(DataType.Date)]
[Display(Name = "Date")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MM-yyyy}")]
[Required(ErrorMessage = "This field is required")]
public string Date { get; set; }
/// <summary>
/// Start Time
/// </summary>
[DataType(DataType.Time)]
[Display(Name = "Start Time")]
[Required(ErrorMessage = "This field is required")]
public string StartTime { get; set; }
/// <summary>
/// End Time
/// </summary>
[DataType(DataType.Time)]
[Display(Name = "End Time")]
[Required(ErrorMessage = "This field is required")]
public string EndTime { get; set; }
}
public class BookingViewModel
{
public int BookingId { get; set; }
public string Date { get; set; }
public string StartTime { get; set; }
public string EndTime { get; set; }
public string inf1 { get; set; }
public string inf2 { get; set; }
}
Ansicht
//the table with the edit buttons
@foreach (var item in Model.BookingModel)
{
@{var grid = new WebGrid(Model.BookingModel, canSort: false); }
<input type="button" id="btnaddbooking" class="btn btn-small btn-primary" value="Add Booking" data-toggle="modal" data-target="#modalbox" />
<hr />
<div class="panel panel-default pre-scrollable">
<table class="table table-striped table-bordered table-responsive table-condensed table-hover">
<thead>
<tr>
<th>Date</th>
<th>Start Time</th>
<th>Duration</th>
<th>End Time</th>
<th>inf1</th>
<th>inf2</th>
</tr>
</thead>
@foreach (var item in Model.BookingModel)
{
<tr>
<td>
@item.Date
</td>
<td>
@item.StartTime
</td>
<td>
@item.Duration
</td>
<td>
@item.EndTime
</td>
<td>
@item.inf1
</td>
<td>
@item.inf2
</td>
@using (Html.BeginForm("Delete", "Booking", FormMethod.Post))
{
@Html.AntiForgeryToken()
<td>
<button class="someButtonClass" data-toggle="modal" data-target="#[email protected]" />
</td>
<td>
<button class="someButtonClass2" type="submit" value="Delete" />
</td>
}
</tr>
}
</table>
</div>
}
//the modal form
@foreach (var item in Model.BookingModel)
{
using (Html.BeginForm("Submit", "Booking", FormMethod.Post))
{
<div id="[email protected]" class="modal">
<div class="modal-dialog">
<div class="modal-content">
<div id="modal-header" class="modal-header">
<h1>Edit Booking #@item.BookingId</h1>
</div>
<div class="modal-body">
<table id="booking-model-table" class="table table-condensed table-striped table-bordered">
<tr>
<td>Date:</td>
<td>
@{
@Html.EditorFor(m => m.Date, new { type = "time", @Value = @item.Date })
@Html.ValidationMessageFor(m => m.Date, "", new { @class = "text-danger" })
}
@item.Date
</td>
</tr>
<tr>
<td>Start Time:</td>
<td>
@{
@Html.EditorFor(m => m.StartTime, new { type = "time", Value = @item.StartTime })
@Html.ValidationMessageFor(m => m.StartTime, "", new { @class = "text-danger" })
}
</td>
</tr>
<tr>
<td>End Time:</td>
<td>
@{
@Html.EditorFor(m => m.EndTime, new { type = "time", Value = @item.EndTime })
@Html.ValidationMessageFor(m => m.EndTime, "", new { @class = "text-danger" })
}
</td>
</tr>
</table>
</div>
<div class="modal-footer">
@Html.AntiForgeryToken()
<button class="btn btn-default" data-dismiss="modal">Close</button>
<button class="btn btn-primary" type="submit" value="Submit">Ok</button>
</div>
</div>
</div>
</div>
}
}
JavaScript
$(function() {
var modelbox = function() {
$("#modalbox").modal("show");
};
$("#btnaddbooking").on('click', modelbox);
});
Diese Seite zu aktualisieren, zeigt eine Tabelle Buchungen, jede Zeile in dieser Tabelle hat eine Bearbeitungsschaltfläche. Jede Bearbeitungsschaltfläche enthält eine Verknüpfung zu einem eindeutigen Formular, damit die Informationen aus der ausgewählten Buchung in das Formular geladen werden können. Danke für die Rückmeldung, die das Wertattribut nicht verwendet, aber könnten Sie einen anderen Weg vorschlagen, das ist die Frage, die ich gestellt habe, weil ich nicht weiß, wie es geht. Das Formular funktioniert in jeder Hinsicht für die Buchung und Validierung funktioniert ordnungsgemäß. Das einzige, was es nicht richtig macht, ist das Vorladen der Werte in die Formularkästen. – Ben
Danke. Ich habe weitere Informationen über die erste foreach-Schleife hinzugefügt. – Ben