Bonjour,

Si je suis relativement expérimenté en .NET classique mais débutant complet en ce qui concerne la méthode MVC.
Voici donc ce que j'ai :
La vue qui est appelé en premier est Index.cshtml qui contient la vue partiel _RechercheRapide.cshtml
Le contrôleur redirige sur la page de résultat Resultat qui contient la vue partiel _ResultatRechercheRapide

Une fois le formulaire posté, la fonction du contrôleur est bien appelé et la propriété ElementRecherche est bien modifié, mais une fois arrivé sur la page de résultat, le contenu de la textbox de résultat reste celui de la textbox posté en page précédente et non la valeur modifié dans le contrôleur.

Je ne vois pas du tout d’où cela peut venir.

Index.cshtml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
@model Easily.Pharma.Livret.Modules.Livret.Models.LivretModels
@using Easily.Pharma.Livret.Modules.Livret.Models   
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@section Menu{
    @Html.Partial("Menu/index")
}
 
@section MenuHeader{
    @Html.Partial("Header/index")
}
<div class="fleft"> @Html.Partial("_RechercheRapide")</div>
_RechercheRapide.cshtml
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
19
20
 
@model Easily.Pharma.Livret.Modules.Livret.Models.LivretModels
@using Easily.Pharma.Core.Mvc
@{
    ViewBag.Title = "_RechercheRapide";
}
 
 
@using (Html.BeginForm("RechercheRap", "livret", FormMethod.Post, new { @id = "formRecherchePatientUf" }))
{
    @Html.ValidationSummary(true)
<div class="fleft" id="ChampRecherche">
    @Html.TextBoxFor(m => m.ElementRecherche, new { size = 90 })
</div>
<div class="fright" id="BoutonRecherche">
    @Html.ButtonSubmitSmall("btnRecherche", "Rechercher", "Rechercher", "bleu")
</div>
<br />
<div class="fleft" id="divResultat">resultat : @Html.LabelFor(m => m.Resultat)</div>
}
Resultat.cshtml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
@model Easily.Pharma.Livret.Modules.Livret.Models.LivretModels
@using Easily.Pharma.Livret.Modules.Livret.Models   
 
@section Menu{
    @Html.Partial("Menu/index")
}
 
@section MenuHeader{
    @Html.Partial("Header/index")
}
<div class="fleft"> @Html.Partial("_ResultatRechercheRapide")</div>
_ResultatRechercheRapide.cshtml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
@model Easily.Pharma.Livret.Modules.Livret.Models.LivretModels
@using Easily.Pharma.Core.Mvc
 
@using (Html.BeginForm("RechercheRap", "livret", FormMethod.Post, new { @id = "formRecherchePatientUf" }))
{
    @Html.ValidationSummary(true)
<div class="fleft" id="ChampRecherche">
    @Html.TextBoxFor(toto => toto.ElementRecherche, new { size = 90 })
    @Html.TextBox("toto", Model.ElementRecherche)
</div>
}
Et enfin le contrôleur LivretController.cs
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Easily.Pharma.Livret.Modules.Livret.Models;
using Easily.Pharma.Livret.Platform.Business;
using Easily.Core.Sessions;
using Easily.Core.Extensions;
using Easily.Core.Jeton;
 
namespace Easily.Pharma.Livret.Modules.Livret.Controllers
{
    public class LivretController : Controller
    {
        //
        // GET: /Livret/
 
        public ActionResult Index()
        {
            LivretModels models = new LivretModels();
            //models.LstLivret = LivretBusiness.GetAll();
            //models.Patient = PatientBusiness.GetById(175556, "CHU-LYON");
            //easily.NoyauOutils.Data.Session ses = new easily.NoyauOutils.Data.Session();
            //ses.PatientId = models.Patient.id;
            //ses=ses.SaveSession();
 
 
            //easily.NoyauOutils.Data.SessionApplicative sesa = new easily.NoyauOutils.Data.SessionApplicative();
            //sesa.data = ObjectExtensions.Serialize(models);
            //sesa.sessionId = ses.Id;
            //sesa.SaveSessionApplicative();
 
            //LivretModels fzefer = (LivretModels)sesa.data.Deserialize(typeof(LivretModels));
            var user = UserContext.Current.User;
            var verif = models.Verif;
            /*if (models.ElementRecherche != "valeur par defaut")
            {
                models.ElementRecherche = "valeur par defaut";
            }
            else
            {
                models.ElementRecherche = "changement";
            }*/
            models.ElementRecherche = "valeur par defaut";
            models.Resultat = "Toto";
            //ViewData["expression"] = models.Resultat;
            return View(models);
        }
 
        public ActionResult RechercheRap(LivretModels liv)
        {
            LivretModels livret = liv;
            /*if (liv.ElementRecherche != "valeur par defaut")
            {
                liv.ElementRecherche = "valeur par defaut";
            }
            else
            {
                liv.ElementRecherche = "changement";
            }*/
            livret.ElementRecherche = "autre";
            //return PartialView("Index", liv);
            return View("Resultat", livret);
        }
 
        public ActionResult crypt(string qs)
        {
            var query = qs.Decrypt().QueryToDictionary();
            return Content("Error");
         }
 
 
         public ActionResult crypt0(string guid)
         {
             var query = JetonCore.GetParametre_JetonByGuid(guid.ToGuid());
             return Content("Error");
         }
 
    }
}
Ce qui est étrange, c'est que si la première textbox (celle qui à la code Razor TextBoxFor) n'affiche pas la valeur modifié dans le controleur : "autre" mais la valeur posté par la textbox du formulaire posté, la deuxième textbox (avec le code Razor sans le for), a bien la valeur "autre" elle.

Auriez vous une idée de ce qui cloche ?