2012-12-12 1 views
1

Hé les gars si atm lorsque l'utilisateur accède à la page de vacances, ils peuvent faire 1 de 2 chosesUtiliser un cookie Envoyer PersonID Pour Different page

1) utiliser un menu déroulant pour sélectionner « nom de la personne » et 2) cliquez sur «créer un nouveau» qui amènera l'utilisateur à une page de création qui lui permettra d'ajouter un nouveau jour férié (à partir de là, il sélectionne le nom de la personne à partir de drop et et sélectionnez la date du calendrier)

Tout cela fonctionne, cependant si l'utilisateur suit à l'origine le premier chemin de la sélection d'un nom de personne et cliquez sur Si les utilisateurs prennent le chemin de 2 et cliquent sur 'créer', ils accèdent à la page de création. Toutefois, la liste déroulante sera de nouveau à «sélectionner» je voudrais que la personne existante sélectionnée dans la liste déroulante précédente pour afficher dans cette liste déroulante.

Un cookie ou une URL/un paramètre?

de toute façon Im coincé s'il vous plaît aider

J'ai essayé un cookie.

[code] 
[HttpGet] 
     public ViewResult Index(string sortOrder, int? currentPersonID) 
     { 
      var holidays = db.Holidays.Include("Person"); 
      HolidayList model = new HolidayList(); 

      if (currentPersonID.HasValue) 
      { 
       model.currentPersonID = currentPersonID.Value; 

      } 
      else 
      { 
       model.currentPersonID = 0; 
      } 

      model.PList4DD = db.People.ToList(); 

      //hyperlink to sort dates in ascending order 
      ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "date" : ""; 
      var dates = from d in db.Holidays 
         where d.PersonId == currentPersonID.Value  
         select d; 

      switch (sortOrder) 
      { 
       case "date": 
        dates = dates.OrderBy(p => p.HolidayDate); 
        break; 
      } 

      model.HList4DD = dates.ToList(); 

      var cookie = new HttpCookie("cookie_name", "currentPersonID"); 
      Response.AppendCookie(cookie);  

      return View(model); 
     } 

    public ActionResult Create() 
     { 
      var cookie = Request.Cookies["cookie_name"]; 
      if (cookie != null) 
      { 
       string value = cookie.Value; 
       //int? value = cookie.Value; 
      } 

      ViewBag.cookie = cookie.Value; 

      ViewBag.Id = new SelectList(db.People, "Id", "Name"); 
      return View(); 
     } 

// J'ai essayé d'utiliser currentPersonID dans l'index comme un int, mais cela ne m'autorisera pas.

[/code] 
My View 
[code] 
@model HolidayBookingApp.Models.startANDend 


@{ 
    ViewBag.Title = "Create"; 
} 

<p> 


    <span>@ViewBag.cookie</span> 


<h2>Create</h2> 

<form action ="ListHolidays" id="listHolidays" method="post"> 
@using (Html.BeginForm()) { 
     @Html.ValidationSummary(true) 
    <fieldset> 
     <legend>Holiday</legend> 

     <div> 
      @Html.LabelFor(model => model.PersonId, "Person") 
     </div> 

     <div>  
      @Html.DropDownListFor(model => model.PersonId, 
           new SelectList(ViewBag.Id, "Value", "Text"), 
           "---Select---" 
           ) 
     @Html.ValidationMessageFor(model => model.PersonId)    
     </div> 

     <div> 
      @Html.LabelFor(model => model.HolidayDate) 
     </div> 

     <div> 

      @Html.TextBoxFor(model => model.HolidayDate) 

      @Html.TextBoxFor(model => model.endDate) 
    <script> 

//  Date.format = 'dd/m/yyy'; 
     $("#HolidayDate").addClass('date-pick'); 
     $("#endDate").addClass('date-pick'); 
      //$('.date-pick').datePicker//({dateFormat: 'dd-mm-yy'}).val(); 

//  clickInput: true 

     $(function() { 
      //3 methods below dont allow user to select weekends 
      $('.date-pick').datePicker(
       { 
        createButton: false, 
        renderCallback: function ($td, thisDate, month, year) { 
         if (thisDate.isWeekend()) { 
          $td.addClass('weekend'); 
          $td.addClass('disabled'); 
         } 

        } 
       } 
     ) 

     .bind('click', 
      function() { 
       $(this).dpDisplay(); 
       this.blur(); 
       return false; 
      } 
     ) 

     .bind('dateSelected', 
      function (e, selectedDate, $td) { 
       console.log('You selected ' + selectedDate); 
      } 
     ); 

      //  HolidayDate is start date 
      $('#HolidayDate').bind('dpClosed', 
        function (e, selectedDates) { 
         var d = selectedDates[0]; 
         if (d) { 
          d = new Date(d); 
          $('#endDate').dpSetStartDate(d.addDays(0).asString()); 
         } 
        } 
      ); 

      //end date is end date 
      $('#endDate').bind('dpClosed', 
        function (e, selectedDates) { 
         var d = selectedDates[0]; 
         if (d) { 
          d = new Date(d); 
          $('#HolidayDate').dpSetEndDate(d.addDays(0).asString()); 
         } 
        } 
       ); 
     }); 



    </script> 

    @Html.ValidationMessageFor(model => model.HolidayDate) 
     </div> 

     <p> 
      <input type="submit" value="Create"/> 
     </p> 



    </fieldset> 
} 

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

@* 
<p>Current Person Selected is: 

@TempData["currentPersonID"] 

</p>*@ 
[code] 

Une fois que je comprends cela, comment puis-je obtenir ma liste déroulante pour stocker la valeur? Une aide?

Merci

Répondre

1

Pour moi, un cookie est un moyen de stocker des informations sur un grand nombre page différente et même si l'utilisateur retourne après un certain temps.

Je préférerais utiliser une chaîne de requête car l'information doit passer d'une page à une autre. Vous pouvez utiliser javascript ou jquery sur l'événement de clic sur le bouton 'Créer', voir si la liste déroulante a une valeur, la mettre dans une chaîne de requête et la rediriger.

Et je vous suggère de lire ci-dessous: http://www.codeproject.com/Articles/43457/Session-Cookie-Query-String-Cache-Variables-Unifie

+0

merci ajp je vais donner le tutoriel aller – John

1

essayer d'utiliser le SelectList d'aide et de passer pour voir un modèle avec une liste d'élément et l'identifiant de l'élément sélectionné.

@Html.DropDownList("name", new SelectList(Model.SomeList, "ItemValueId", "ItemDescription", Model.ItemValueId), new { @class = "someclass" }) 
Questions connexes