В настоящее время я работаю с ViewModel, которая содержит список форм дохода, но я изо всех сил пытаюсь динамически добавлять или удалять формы в представлении. В идеале пользователи должны иметь возможность нажать кнопку «+», чтобы добавить новую форму дохода, или кнопку «x», чтобы удалить ее.
Код: Выделить всё
// GET: Incomes/Create
public IActionResult Create()
{
var model = new MultipleIncomeVM();
ViewData["BudgetId"] = new SelectList(_context.Budgets, "BudgetId", "Name");
ViewData["CategoryId"] = new SelectList(_context.Categories, "CategoryId", "Name");
return View(model);
}
// POST: Incomes/Create
[HttpPost]
[ValidateAntiForgeryToken]
public async Task[i] Create(MultipleIncomeVM incomevm)
{
try
{
// Validate only the incomes with Amount greater than 0
var validIncomes = incomevm.Incomes.Where(i => i.Amount > 0);
if (ModelState.IsValid)
{
foreach (var i in validIncomes)
{
// Add each income
_context.Add(i);
await _context.SaveChangesAsync();
// A new transaction
var transaction = new Transaction
{
Date = i.DateReceived,
Type = ControllersName.GetControllerName(this.GetType().Name),
Detail = i.Source,
Amount = i.Amount,
BudgetId = i.BudgetId,
CategoryId = i.CategoryId
};
_context.Add(transaction);
await _context.SaveChangesAsync();
}
return RedirectToAction(nameof(Index));
}
}
catch (DbUpdateException)
{
ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists, see your system administrator.");
}
ViewData["BudgetId"] = new SelectList(_context.Budgets, "BudgetId", "Name");
ViewData["CategoryId"] = new SelectList(_context.Categories, "CategoryId", "Name");
return View(incomevm);
}
Код: Выделить всё
namespace My_Budget.ViewModels
{
public class MultipleIncomeVM
{
public List Incomes { get; set; } = new List
{
new Income { DateReceived = DateTime.Today }
};
}
}
Код: Выделить всё
@model My_Budget.ViewModels.MultipleIncomeVM
@{
ViewData["Title"] = "Create Incomes";
}
Create Multiple Incomes
Source
Amount
Date Received
Category
@for (int i = 0; i < Model.Incomes.Count; i++)
{
[/i]
[i][/i]
@* Hidden value *@
}
Back to List
@section Scripts {
@{
await Html.RenderPartialAsync("_ValidationScriptsPartial");
}
}
Код: Выделить всё
I've created a list in the ViewModel to hold multiple income entries.
I can display multiple forms initially, but I'm unsure how to handle dynamic addition/removal of forms in the view.
Подробнее здесь: https://stackoverflow.com/questions/791 ... -asp-net-m