Hallo,
ich habe ein kleines Problem wo ich nicht weiter komme.
Ich habe 2 Datalist erstellt.
Wenn ich ein Eintrag in der 1.Datalist machen wird dieser in die DB geschrieben, mache ich aber einen nur in die2 dann wird dieser nicht eingetragen.
Was könnte hier der Fehler sein??
Code View:
<form asp-controller="Lagemeldungen" asp-action="CreatEditLage">
<div class="Card">
<div class=" card-header">
<h3>Lagemeldungen</h3>
</div>
<div class="card-body">
<div class="row">
<input asp-for="Lagemeldungen" type="text" class="form-control" list="LageFeuer" placeholder="Lagemeldung Feuer">
<datalist id="LageFeuer">
<option>f1 (Kleinbrand/Container)</option>
</datalist>
</div>
<br />
<div class="row">
<input asp-for="Lagemeldungen" type="text" class="form-control" list="LageTHL" placeholder="Lagemeldung THL">
<datalist id="LageTHL">
<option>f1 (Kleinbrand/Container)</option>
</datalist>
</div>
</div>
<div class="card-footer">
<button class="btn btn-primary" type="submit">Speichern</button>
</div>
</div>
</form>
Code Controller:
public class LagemeldungenController : Controller
{
private readonly ApplicationDbContext _context;
public LagemeldungenController(ApplicationDbContext context)
{
_context = context;
}
public IActionResult Index()
{
return View();
}
public IActionResult CreateEditLagemeldungen(int id)
{
return View();
}
public IActionResult CreatEditLage(Lagemeldung lagemeldung)
{
// Daten werden hier in Datenbank geschrieben
if (lagemeldung.Id == 0)
{
// Wenn wir es nicht bearbeiten soll ein neues hinzugefügt werden!!!!!
_context.Lagemeldungs.Add(lagemeldung); //Was in die Datenbank hinzufügen
}
else
{
var lagefromDb= _context.Lagemeldungs.SingleOrDefault(x => x.Id == lagemeldung.Id);
if(lagefromDb == null)
{
return NotFound();
}
lagefromDb.Uhrzeit = lagemeldung.Uhrzeit;
lagefromDb.Absender = lagemeldung.Absender;
lagefromDb.Empfänger = lagemeldung.Empfänger;
lagefromDb.Lagemeldungen = lagemeldung.Lagemeldungen;
}
_context.SaveChanges(); //Die Daten wurden in die Datenbank gespeichert
return RedirectToAction("CreateEditLagemeldungen");
}
Grüße Markus
Das betrifft sowohl ASP wie auch ganz einfach HTML bzw. HTTP: Willst Du mehrere Einträge erzeugen und via HTTP übergeben, müssen diese a) indexiert werden und b) muss das Deine Methode auch akzeptieren.
Funktionsweise siehe zB https://www.c-sharpcorner.com/UploadFile/pmfawas/Asp-Net-mvc-how-to-post-a-collection/ oder andere Treffer mit Google Suche nach "asp core post collectionm"
Grund ist, dass Werte in HTTP auf Key Value basieren und Du eben pro Key nur ein Wert übergeben kannst, daher kommt auch nur ein Wert an (siehst Du auch in den Developer Tools Deines Browsers Deiner Wahl).
Tipp:
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code