2011-12-03 4 views
0

모든 제품을 반환 할 때 하나의 양식이 있습니다. 그리고 모든 제품 옆에 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를 얻으려고, 내가 HiddenFor로보기에 그것을 퍼트와 모델을 사용하여 얻을. ..하지만 작동하지 않습니다 ...

답변

0

HttpPost zuzycie() 메소드를 사용하여 아이디어가 무엇인지 명확하지 않습니다. Zuzycie() 란 무엇입니까? 여러 레코드를 저장하는 방법에 대해 묻고 있지만 ZuzycieModel cleary는 단일 ProductID를 참조합니다.

왜 ViewBag을 사용하여 컬렉션에보기를 전달합니까? 당신은 당신이 전달하는 것을

return View(prod); 

공지 사항을 통해 그것을 반환 할 수 없습니다 - 컬렉션 (목록 <>) 나는 이것이 논리 지속성 데이터에 반영하는 표시되지 않습니다.

+0

나는 알고 있습니다. 그래서 내가 이것을하고 싶다면, 내가해야 할 일. 내 말은 무슨 말인지 ... 통제 ... 무슨 일이 시작되는지, 무엇에 대해 읽었는지 어떻게 생각하는지 말해줘. ViewBag을 사용하여 테이블을 표시합니다. 왜이 .. .. 지금은 아니야 ... 뷰의 테이블에 쇼 레코드가 필요해서 작동 했으므로 여전히 이것을 사용합니다. 나는'return view (prod)를 사용했다; '예. TextBox에서. – user1031034

+0

이 질문을보십시오. http://stackoverflow.com/questions/4720330/model-containing-list-of-models-mvc-3-razor 더하기이 튜토리얼을 완전히 잃어버린 느낌이 든다면 완벽한 방법입니다. 주요 MVC 개념 이해 http://mvcmusicstore.codeplex.com/ – torm

관련 문제