2017-04-04 2 views
0

Hy ich bin Anfänger in asp.net MVC und ich habe ich Problem !! mein Problem ist ich habe 2 Modell log_ligne_voyage und log_ligne_demande_voyage mein Problem ist ich usion checkBox ich will, wenn ich auf den Button "Planifier" als Shoing das Bild ich möchte den Wert der ausgewählten Zeile der Tabelle log_ligne_demande_voyage in die hinzufügen Tabelle log_ligne_voyage. Sorry für mein englisch ich spreche nicht sehr gut Englisch This is the image ist dies log_ligne_demande_voyage Code:MVC checkBox Wert

public partial class log_ligne_demande_voyage 
{ 
    public log_ligne_demande_voyage() 
    { 
     this.log_ligne_voyage = new HashSet<log_ligne_voyage>(); 
    } 

    public int ID_LIG { get; set; } 
    public Nullable<int> ID_TYPE_LIG { get; set; } 
    public Nullable<int> ID_ETAT_LIG { get; set; } 
    public Nullable<int> NUM_DEM { get; set; } 
    public Nullable<int> ID_PER { get; set; } 
    public string CMT_LIG { get; set; } 
    public Nullable<double> QTE_LIG { get; set; } 
    public Nullable<System.DateTime> CrtDateAuto { get; set; } 
    public string Lieu_Dem { get; set; } 
    public int Num_Dem { get; set; } 
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] 
    public DateTime Date { get; set; } 
    [DisplayFormat(DataFormatString = "{0:hh\\:mm}", ApplyFormatInEditMode = true)] 
    public TimeSpan Heure { get; set; } 
    public Nullable<int> ID_file { get; set; } 

das ist log_ligne_voyage Modellcode:

public partial class log_ligne_voyage 
{ 
    public int ID_LIG_voy { get; set; } 
    public Nullable<int> ID_TYPE_LIG_voy { get; set; } 
    public Nullable<int> ID_ETAT_LIG_voy { get; set; } 
    public Nullable<int> NUM_Voy { get; set; } 
    public Nullable<int> ID_PER { get; set; } 
    public string CMT_LIG_voy { get; set; } 
    public Nullable<double> QTE_LIG_voy { get; set; } 
    public string Lieu_LIG_voy { get; set; } 
    public Nullable<int> ID_File { get; set; } 
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] 
    public DateTime Date_LIG_voy { get; set; } 
    [DisplayFormat(DataFormatString = "{0:hh\\:mm}", ApplyFormatInEditMode = true)] 
    public TimeSpan Heure_LIG_voy { get; set; } 
    public Nullable<System.DateTime> CrtDateAuto { get; set; } 
    public Nullable<int> ID_Ligne { get; set; } 

    public virtual log_ligne_demande_voyage log_ligne_demande_voyage { get; set; } 
    public virtual log_voyage log_voyage { get; set; } 
    public virtual log_type_demande log_type_demande { get; set; } 
    public virtual log_personnel log_personnel { get; set; } 
    public virtual log_voyage_file log_voyage_file { get; set; } 
    public virtual log_voy_etat log_voy_etat { get; set; } 
} 

} dies der Controller-Code ist:

[HttpPost] 
    public ActionResult LigneCheked(/*IEnumerable<log_ligne_demande_voyage> LigneVoyage*/ int[] selectedligne, log_ligne_demande_voyage item) 
    { 
     try 
     { 
      if (Session["login"] == null) 
      { 
       return RedirectToAction("Index", new { controller = "Login", action = "Index" }); 
      } 

      login = Session["login"].ToString(); 
      log_voyage model = new log_voyage(); 
      model.UserCrt_Voy = login; 
      model.Dat_Voy = DateTime.Today; 
      entities.Set<log_voyage>().Add(model); 
      entities.SaveChanges(); 
      //fine the bigest ID of the voyage 
      int MaxID = int.MaxValue; 
      foreach (DataRow db in log_voyage.Rows) 
      { 
       int ID_Voy = db.Field<int>("Num_Voy"); 
       MaxID = Math.Max(MaxID, ID_Voy); 
      } 
      int intIdt = entities.log_voyage.Max(u => u.Num_Voy); 

      foreach (var item1 in selectedligne) 

      { 


       log_ligne_voyage model1 = new log_ligne_voyage(); 
        item.ID_ETAT_LIG = 3; 
        model1.Date_LIG_voy = item.Date; 

        model1.CMT_LIG_voy = item.CMT_LIG; 
        model1.ID_Ligne = item.ID_LIG; 
        model1.ID_TYPE_LIG_voy = item.ID_TYPE_LIG; 
        model1.ID_PER = item.ID_PER; 
        model1.QTE_LIG_voy = item.QTE_LIG; 
        model1.Lieu_LIG_voy = item.Lieu_Dem; 
        model1.ID_File = item.ID_file; 
        model1.Heure_LIG_voy = item.Heure; 
        model1.ID_ETAT_LIG_voy = item.ID_ETAT_LIG; 
        model1.NUM_Voy = intIdt; 
        entities.Set<log_ligne_voyage>().Add(model1); 
        entities.SaveChanges(); 
        return RedirectToAction("Index", "CreationVoyage"); 

       } 






     } 
     catch (DataException /* dex */) 
     { 
      ModelState.AddModelError("", "Impossible d'executer cette action. contacter le service info SVP."); 

      return View("CreationVoyage"); 
     } 
     return View("CreationVoyage"); 
    } 



} 

dies ist die Ansicht Code:

@foreach(var item in Model) 
      { 
     <tr> 
      <td> 

       <input type="checkbox" id="checkAll" name="selectedligne" value="@item.ID_LIG" /> 

      </td> 

Antwort

1

Dies ist die Art, wie ich glaube, Sie können es tun:

Im Ansicht, geben Sie alle Ihre Kontrollkästchen mit dem gleichen Namen und einen eindeutigen Wert.

<input type="checkbox" name="SelectedLignes" value="@item.ID_LIG" /> 

Bei dem Verfahren Controller Aktion, eine Liste mit den Namen der Kontrollkästchen passieren.

[HttpPost] 
public ActionResult LigneCheked(IList<int> SelectedLignes) 
{ 
    // Receive only those item that were selected 
    var selectedItems = Db.log_ligne_demande_voyage.Where(s => SelectedLignes.Contains(s.ID_LIG)); 
    foreach (var item in selectedItems) 
    { 
    // Now map item with log_ligne_voyage and add with Db context 
    var newItemToSave = new log_ligne_voyage{ 
     //----------- 
    }; 
    Db.log_ligne_voyage.Add(newItemToSave); 
    } 
    Db.SaveChanges(); 
    return RedirectToAction("Display"); //Or something like it. 
} 
+1

Vielen Dank, Merci beaucoup pour votre aide: D – Sofia