2013-05-27 84 views
1

我使用C#和SQL Server 2005頁面重載本身在ASP MVC和Entity Framework提交後

開發一個ASP.NET的MVC 3應用程序,我有2次:

指數:包含一個DropDownList「 GAMME」和按鈕‘配置者’

GESTION:Partail查看包含許多其他領域,,,我會發現僅是必要的:DROPDOWNLIST‘郵政’和一個按鈕提交‘Enregistrer’

當我點擊按鈕'配置',,,的部分視圖'Gestion'id像這樣打開: enter image description here

當我填充字段,然後點擊'Enregistrer'按鈕。所有的值將被保存在ListG列表中。

在DropDownList'Poste'中選擇的項目將被刪除。

問題:

在提交後,並去除DropDownList中的項目,我想的是,「局部視圖」仍然顯示和我沒有點擊另一個時間上的按鈕「配置者」。

指數的代碼視圖:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.master" Inherits="System.Web.Mvc.ViewPage<MvcApplication2.Models.FlowViewModel>" %> 
<%@ Import Namespace="Helpers" %> 
<% using (Html.BeginForm("Save", "ProfileGa")) 
    { %> 

    <div><%:Html.Label("Gamme :")%><%: Html.DropDownListFor(model => model.SelectedProfile_Ga, new SelectList(Model.Profile_GaItems, "ID_Gamme", "ID_Gamme"), new { @id = "gg" })%> 
    <input type="button" value="Configurer" id="btnShowGestion" onclick="GamDis()"/> 

<div id="divGestion"> 
    <%: Html.Partial("Gestion", Model) %> 
    </div> 

     <% } %> 
input type="button" value = "Valider" /> 
<script type="text/javascript"> 

    $(document).ready(function() { 

     $('#btnShowGestion').click(function() { $('#divGestion').slideToggle("slow") }); 

    }); 

</script> 

視圖 'GESTIÓN' 的代碼:

<legend>Gestion de Gamme</legend> 

     <div> 
     <%:Html.Label("Poste :")%><%: Html.DropDownListFor(model => model.SelectedPoste, Model.PostesItems, new { @id = "poste" })%> 
<div> 
     <%:Html.Label("Nombre de Passage :")%><%: Html.EditorFor(model=>model.Nbr_Passage)%> 
     </div> 
     <div class="editor-field"> 
      <%: Html.ValidationMessageFor(model => model.Nbr_Passage)%> 
      </div> 

     <div> 
     <%:Html.Label("Position :")%><%: Html.EditorFor(model=>model.Position)%> 
     </div> 
     <div> 
     <%:Html.Label("Poste Suivant :")%><%: Html.DropDownListFor(model => model.PosteSuivantSelected, Model.PostesItems, new { @id = "dd" })%> 
     <input type="button" value="Ajouter" id="add" onclick="addtext()"/> 


<script type="text/javascript"> 
    $(function() { 
     $('#btnSave').click(function() { 
      $('#poste option:selected').remove(); 

     }); 
    }); 
</script> 

     <% } %> 

控制器的代碼的一部分:

[HttpGet] 
     public ActionResult Index() 
     { 
      var viewModel = new FlowViewModel(); 
      viewModel.PostesItems = new SelectList(db.Postes.ToList(), "ID_Poste", "ID_Poste"); 
      viewModel.Profile_GaItems = db.Profil_Gas.ToList(); 
      viewModel.GaItems = db.Gammes.ToList(); 
      viewModel.ListG = (List<Gamme>)System.Web.HttpContext.Current.Session["GammeList"]; 

      string[] PostesID; 

      if(viewModel.ListG != null){ 

      PostesID = viewModel.ListG.Select(item=>item.ID_Poste).ToArray(); 


      viewModel.PostesItems = new SelectList(db.Postes.Where(item=>!PostesID.Contains(item.ID_Poste) ).ToList(), "ID_Poste", "ID_Poste"); 

      } 
      return View(viewModel); 

     } 

[HttpPost] 
     public ActionResult Save(FlowViewModel model) 
     { 
      Console.WriteLine("" + model.Nbr_Passage); 
      if (ModelState.IsValid) 
      { 

       Gamme G = new Gamme(); 
       G.ID_Gamme = model.SelectedProfile_Ga; 
       G.ID_Poste = model.SelectedPoste; 

       G.Next_Posts = model.PosteSuivantSelected; 
       G.Nbr_Passage = int.Parse(model.Nbr_Passage); 
       G.Position = int.Parse(model.Position); 

       ((List<Gamme>)System.Web.HttpContext.Current.Session["GammeList"]).Add(G); 
       var list = ((List<Gamme>)System.Web.HttpContext.Current.Session["GammeList"]); 


      } 
      return RedirectToAction("Index"); 
        } 

這是型號FlowViewModel:

public class FlowViewModel 
    { 

     [Key] 
     public string IDv { get; set; } 
     [NotMapped] 
     public SelectList PostesItems { get; set; } 

     public List<Profile_Ga> Profile_GaItems { get; set; } 
     public List<Gamme> GaItems { get; set; } 
     public List<Famille> FaItems { get; set; } 
     public List<Sous_Famille> SFItems { get; set; } 
     public List<Produit> PItems { get; set; } 
     public List<Ns_AFaire> NSItems { get; set; } 
     public List<Fonction_Poste> FPItems { get; set; } 

     [NotMapped] 
     public SelectList NextPS { get; set; } 

     [NotMapped] 
     public SelectList GenreItems { get; set; } 
     public string SelectedProfile_Ga { get; set; } 
     public string SelectedPoste { get; set; } 
     public string SelectedFonction { get; set; } 
     public string PostePrecedentSelected { get; set; } 
     public string PosteSuivantSelected { get; set; } 
     public string Position { get; set; } 
     public string Nbr_Passage { get; set; } 
     public string SelectedGenre { get; set; } 

     [NotMapped] 
     public List<Gamme> ListG {get;set;} 

     public FlowViewModel() 
     { 
      FaItems = new List<Famille>(); 
      SFItems = new List<Sous_Famille>(); 
     } 


      public List<string> ID_Fonction { get; set; } 


    } 

是否有任何想法使用會話來解決這個問題。

+0

所示的代碼是'divGestion'默認是隱藏的一些值。 – Saravanan

+0

@saravanan你的意思是當我打開頁面時,如果是這樣,是的,,, divGestion是隱藏的 – anouar

回答

1

可以顯示局部視圖如果會話具有類似下面

var sessionList = System.Web.HttpContext.Current.Session["GammeList"] as List<Gamme>; 
if(sessionList != null && sessionList.Count > 0){ 
    <div id="divGestion"> 
     <%: Html.Partial("Gestion", Model) %> 
    </div> 
} 
+0

thx ,,,但我怎麼能把這個代碼放在控制器,,,它包含一個html div? – anouar

+0

你應該把這段代碼放在索引視圖頁面中。 – Saravanan

+0

我嘗試了,但無法找到 ??????? – anouar

相關問題