#c# #asp.net #asp.net-mvc #visual-studio #model-view-controller
Вопрос:
В «Auftragsverwaltung» мне нужно выбрать Тип (Перечисление) «Bestandsverwaltung», и если я выбрал один из них, «Bestandsverwaltung» нужно обновить на один элемент меньше. Существует также проблема, когда я выполняю программу, что создание/удаление/редактирование для «Auftragsverwaltung» не работает.
public class Auftragsverwaltung
{
public int Id { get; set; }
public Typen Typ { get; set; }
public int BaustellenID { get; set; }
}
Создать сайт из Auftragsverwaltung:
<div class="row">
<div class="col-md-4">
<form asp-action="Create">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="Typ" class="control-label"></label>
<select asp-for="Typ" asp-items="@Html.GetEnumSelectList(typeof(Typen))" class="form-control"></select>
<span asp-validation-for="Typ" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="BaustellenID" class="control-label"></label>
<span asp-validation-for="BaustellenID" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</form>
</div>
урок от Bestandsverwaltung:
public enum Typen
{
Kran,
Akkuschrauber,
LKW,
Schaufel,
Bagger,
Schraubendreher,
Hammer,
Helm,
Zange,
Absperrband
}
public class Bestandsverwaltung
{
public int Id { get; set; }
public Typen Typ { get; set; }
public DateTime Kaufdatum { get; set; }
public int Wartungsintervall { get; set; }
}
}
Code from AuftragsverwaltungsController:
public class AuftragsverwaltungsController : Controller
{
private readonly MyContext _context;
public AuftragsverwaltungsController(MyContext context)
{
_context = context;
}
// GET: Auftragsverwaltungs
public async Task<IActionResult> Index()
{
return View(await _context.Auftragsverwaltung.ToListAsync());
}
// GET: Auftragsverwaltungs/Details/5
public async Task<IActionResult> Details(int? id)
{
if (id == null)
{
return NotFound();
}
var auftragsverwaltung = await _context.Auftragsverwaltung
.FirstOrDefaultAsync(m => m.Id == id);
if (auftragsverwaltung == null)
{
return NotFound();
}
return View(auftragsverwaltung);
}
// GET: Auftragsverwaltungs/Create
public IActionResult Create(int id)
{
ViewBag.id = id;
return View();
}
// POST: Auftragsverwaltungs/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Id,Typ,BaustellenID")] Auftragsverwaltung auftragsverwaltung)
{
if (ModelState.IsValid)
{
_context.Add(auftragsverwaltung);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(auftragsverwaltung);
}
// GET: Auftragsverwaltungs/Edit/5
public async Task<IActionResult> Edit(int? id)
{
if (id == null)
{
return NotFound();
}
var auftragsverwaltung = await _context.Auftragsverwaltung.FindAsync(id);
if (auftragsverwaltung == null)
{
return NotFound();
}
return View(auftragsverwaltung);
}
// POST: Auftragsverwaltungs/Edit/5
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit(int id, [Bind("Id,Typ,BaustellenID")] Auftragsverwaltung auftragsverwaltung)
{
if (id != auftragsverwaltung.Id)
{
return NotFound();
}
if (ModelState.IsValid)
{
try
{
_context.Update(auftragsverwaltung);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!AuftragsverwaltungExists(auftragsverwaltung.Id))
{
return NotFound();
}
else
{
throw;
}
}
return RedirectToAction(nameof(Index));
}
return View(auftragsverwaltung);
}
// GET: Auftragsverwaltungs/Delete/5
public async Task<IActionResult> Delete(int? id)
{
if (id == null)
{
return NotFound();
}
var auftragsverwaltung = await _context.Auftragsverwaltung
.FirstOrDefaultAsync(m => m.Id == id);
if (auftragsverwaltung == null)
{
return NotFound();
}
return View(auftragsverwaltung);
}
// POST: Auftragsverwaltungs/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> DeleteConfirmed(int id)
{
var auftragsverwaltung = await _context.Auftragsverwaltung.FindAsync(id);
_context.Auftragsverwaltung.Remove(auftragsverwaltung);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
private bool AuftragsverwaltungExists(int id)
{
return _context.Auftragsverwaltung.Any(e => e.Id == id);
}
}
Комментарии:
1. Я рекомендую вам использовать код @Html.enumdropdownlist для(модель => модель. Тип, новый { htmlатрибуты = новый { @класс = «управление формой» } }) , чтобы отобразить тип перечисления.