Связь между моделями в asp.net

#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атрибуты = новый { @класс = «управление формой» } }) , чтобы отобразить тип перечисления.