Как передать выбранные данные из выпадающего списка в другую таблицу и обновить эту таблицу в asp.Net MVC

#c# #html #asp.net-mvc

Вопрос:

Класс управления сохраняет входные данные в таблицу счетов-фактур.

Это мой контрольный класс

 public ActionResult UpdateInvoice()
{   var getProduct = db.InventoryTbs.ToList();
        SelectList list = new SelectList(getProduct, "PId", "PName", "PPrice");
        ViewBag.Product = list;
    return View();
}

[HttpPost]
public ActionResult UpdateInvoice(InvoiceTb idetail)
{
    if (Session["User"] == null)    // doesn't work
    {
        return RedirectToAction("Login");
    }
    else
    {
        try
        {

            db.InvoiceTbs.Add(idetail);
            db.SaveChanges();

            return RedirectToAction("ShowInvoice");
        }
        catch
        {
            return View();
        }
    }
}
 

Это мой UpdateInvoice.cshtml . Здесь, если я введу количество, и стоимость счета будет сохранена в Invoice таблице.

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

Я пробовал Json и некоторые другие способы, но безуспешно.

 @model TallyBook_Store_Management_System.Models.InvoiceTb

@{
    ViewBag.Title = "UpdateInvoice";
    var product = ViewBag.Product;
}

<h2>UpdateInvoice</h2>

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>InvoiceTb</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.ListName, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownList( "Product", "Select")
                @Html.ValidationMessageFor(model => model.ListName, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.LQuantity, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.LQuantity, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.LQuantity, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Bill, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Bill, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Bill, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>
 

Ответ №1:

Я решил проблему, передав выбранные в раскрывающемся списке данные из представления в контроллер. Затем я обновил конкретную таблицу базы данных в контроллере.

Если есть еще какие-то эффективные или хорошие способы, пожалуйста, поделитесь, я хотел бы изучить более эффективные подходы.