Сохранение формы в Razor View с 2 частичными страницами без refre sh или перенаправления - PullRequest
0 голосов
/ 08 января 2020

Я ищу способ сохранить мою форму на странице с частичным просмотром. У меня есть 2 строки, одна имеет частичное представление, показывающее список элементов, а другая имеет форму для добавления в этот список.

Я использую их как частичные, потому что они имеют отдельные модели. Я бы хотел, чтобы он обновлял список выше при добавлении нового элемента. Основной вид имеет идентификатор в URL и оба действия, кроме идентификатора. Поэтому я не могу перенаправить на исходную страницу из-за идентификатора и просто вернуть ошибки просмотра.

Это отчет о расходах, который вы выбираете для добавления расходов. Это поднимает эту страницу.

Действия контроллера :

public ActionResult Expenses(int ExpenseId)
{
    return View();
}

public ActionResult _ExpenseList(int ExpenseId)
{
    return View(db.Expenses.Where(x => x.ExpenseId == ExpenseId).ToList());
}

public ActionResult _ExpenseForm(int ExpenseId)
{
    CustomerEntities customerEntities = new CustomerEntities();
    List<SelectListItem> categoryItem = new List<SelectListItem>();
    ExpensesViewModel casModel = new ExpensesViewModel();
    List<ExpenseTypes> expensetypes = customerEntities.ExpenseType.ToList();
    expensetypes.ForEach(x =>
    {
        categoryItem.Add(new SelectListItem 
                        { 
                            Text = x.CategoryItem, 
                            Value = x.ItemCategoryId.ToString() 
                        });
    });
    casModel.ExpenseTypes = categoryItem;

    return View(casModel);
}

[HttpPost]
public ActionResult _ExpenseForm(Expenses newExpense)
{

    if (ModelState.IsValid)
    {
        //db.Users.Add(newUser);
        //db.SaveChanges();
        var viewModel = new Expenses();
        {
            viewModel.ExpenseId = newExpense.ExpenseId;
            viewModel.ItemName = newExpense.ItemName;
            viewModel.Amount = newExpense.Amount;
            viewModel.ExpenseDate = newExpense.ExpenseDate;
            viewModel.Category = newExpense.Category;
        };

        //return RedirectToAction("Expenses");
        return View();
    }
    else
    {
        return View(newExpense);
    }
}

Просмотр :

<section class="content">
  <div class="row">
      @Html.Action("_ExpenseList")
  </div>
  <br />
  <hr />
  <div class="row">
      @Html.Action("_ExpenseForm")
  </div>
</section>

Вот моя текущая кнопка для отправки (Расположен _ExpenseForm):

<input type="submit" value="Add" class="btn btn-warning btn-sm" />
...