Сохранить несколько записей из одной формы - PullRequest
0 голосов
/ 03 декабря 2011

У меня есть одна форма, когда я возвращаю все товары. И рядом с каждым продуктом у меня есть TextBox.

 View form:    
|ID|Product|TextBox (amount of product)
|3 |Carrot | 20 
|4 |Potatos| 5 
|7 |Tomato | 10 

В этом текстовом поле я записываю количество продуктов и сохраняю их в базе данных

 Add(zuzycie) table:    
|ID|ID_Product|amount|date
|1 | 3        | 20   |3.12.2011
|2 | 4        | 5    |3.12.2011
|3 | 7        | 10   |3.12.2011

и сумма количества товара в другой (товарной) базе данных.

Product table   
|ID|name   |amount
|3 |Carrot |10 + 20
|4 |Potatos|15 + 5
|7 |Tomato |7 + 10

В базе данных сумма сохраняется как отдельная запись. Я надеюсь, вы понимаете, что я имею в виду.

Как получить ID каждого продукта в контроллере и сохранить его в базе данных?

Вид:

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Zużycie produków</legend>
        <br />
        @{ 
    var grid = new WebGrid(ViewBag.produkty,null, "Produkty", 5);
              }
@grid.GetHtml(
        tableStyle: "grid",
        headerStyle: "head",
        alternatingRowStyle: "alt",
        columns: grid.Columns(
          grid.Column("nazwa_prod","Produkt"),
           grid.Column("ilosc","Ilość"),
           grid.Column("jednostka","Jed."),
           grid.Column("cena","Cena"),
           grid.Column("nazwa","Firma"),
           grid.Column("ID_Produkt", "ID_Prod" ),
           grid.Column(header: "Zuzycie", format: (item) =>
                        new HtmlString(
                                Html.TextBoxFor(model => model.ilosc).ToString())) /*amount text box */


        )
        )

Модель:

public class zuzycieModel
    {
        public int ID_Produktu { get; set; } //Id_product
        public decimal ilosc {get;set;}  //amount
        public string data { get; set; } //date

    }

Контроллер:

public ActionResult zuzycie()
        {
            var prod = (from d in baza.Produkts
                        join s in baza.Firmas on d.ID_firma equals s.ID_firma
                        select new { d.ID_firma, d.nazwa_prod, d.ilosc, d.jednostka, d.cena, d.ID_Produkt, s.nazwa }).ToList();


            ViewBag.produkty = prod;
            return View();
        }

        [HttpPost]
        public ActionResult zuzycie(zuzycieModel model)
        {
            Zuzycie zuz = new Zuzycie(); //table zuzycie
            var dat = DateTime.Today;

            zuz.ID_Produkt = model.ID_Produktu; //Id product
            zuz.ilosc = model.ilosc; //amount
            zuz.data = dat; //date

            baza.Zuzycies.InsertOnSubmit(zuz);
            baza.SubmitChanges();

            return RedirectToAction("zarzadzaj_produktami", "Produkt");
        }

Я пытаюсь получить ID продукта, я поместил его в View as HiddenFor и использую модель ... но он не работает ...

1 Ответ

0 голосов
/ 04 декабря 2011

Мне неясно, что вы думаете о методе HttpPost zuzycie ().Что такое Zuzycie ()?Вы спрашиваете о сохранении нескольких записей, но ваш ZuzycieModel cleary ссылается на один ProductID.

Почему вы используете ViewBag для передачи коллекции в View?вы не можете просто вернуть его через

return View(prod);  

Обратите внимание, что вы проходите - Коллекция (Список <>), и я не вижу, чтобы это отразилось в вашей логике сохранения данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...