Bonjour,

Aujourd'hui j'ai un probleme avec le tri par date. J'ai une application ASP.NET MVC3 qui traite des demandes. Dans mon index principal, je liste toute les demandes de la base. J'aimerais trier ces dernieres en affichant par défaut les demandes créées les 3 derniers mois : ça marche et dans la vue index, j'aimerais avoir deux champs text "DateDebut" "DateFin" qui permettent de selectionner les deux dates qui definissent ma fourchette.
Je ne sais pas comment realiser cela. J'ai commencé à faire dans mon action(je l'ai simplifiée):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
public ActionResult Index(... DateTime DateDeb = new DateTime(0001,01,01), DateTime DateFin = new DateTime(0001,01,01))
        {
 
            if (DateDeb.Year == 0001 && DateFin.Year == 0001)
            {
                DateFin = DateTime.Now;
                TimeSpan ecart = new TimeSpan(90, 0, 0, 0);
                DateDeb = DateFin.Subtract(ecart);
                ViewBag.DateDeb = DateDeb;
                ViewBag.DateFin = DateFin;
            }
 
            var demandes = from s in db.Demandes where s.Date_Demandee > DateDeb && s.Date_Demandee < DateFin
                           select s;
 
  return View(demandes.ToList());
        }
J'ai un probleme a ce niveau avec les DateTime, d'abord je ne l'avais pas initialisé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
public ActionResult Index(... DateTime DateDeb, DateTime DateFin)
et la condition:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (DateDeb.Year == null && DateFin == null)
Mais un DateTime ne peut pas être null.

Donc maintenant, j'ai cette erreur:
Encountered an invalid type for a default value.
Dans ma vue, j'ai simplement placé deux champs text dont je récupère la valeur via un formulaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
 
    <div>
       <label>Année de début</label><input type="text" name="DateDeb" value="@ViewBag.DateDeb"/>
       <label>Année de fin</label><input type="text" name="DateDeb" value="@ViewBag.DateFin"/>
    </div>
J'avais pensé passer par les ViewBags, mais je ne sais pas comment mettre dans le ViewBag,dans la vue, la valeur que prends le champs.

Bonne soirée