bonjour

je suis débutant en ASP.NET MVC. je développe une application web de gestion DRA en utilisant Entity Framwork. et DRA c'est une achat par caisse. et je veux implémenter une opération d'insertion de l'affectation entre compte de charge et compte analytique ca veut dire il y a relation entre table compte de charge et table compte analytique et je veut inserer un compte analytique affecté a un compte de charge sélectionné.
Voilà la liste des comptes de charge :

Nom : cc-ca-1.png
Affichages : 524
Taille : 694,3 Ko



Si je clique sur le lien Compte Analytique correspondant de chaque compte de charge une liste de compte analytique affecté à ce compte de charge sera affiché.
par exemple :je clique sur lien Compte Analytique correspondant de compte de charge :
Fournitures Consommées Gpl Condi ( Charge Butane ) la List des compte comptes analytique correspondante à ce compte de charge sera affiché comme ça :

Nom : cc-ca-2.png
Affichages : 515
Taille : 597,4 Ko

Cette vue de liste de compte analytique est une vue partielle et voilà le code sa méthode sur le Controller :

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
public PartialViewResult ListComptAnalByComptChrg(int? idComptChrg){
 
 
 
                List<CompteAnalytiqueViewModels> comptAnalVMs = (from ca in db.COMPTE_ANALYTIQUE
                                                                 from caAffectDom in ca.CA_AFFECTATION_DOM
                                                                 from ccAffectCa in caAffectDom.CC_AFFECTATION_CA
                                                                 where(ccAffectCa.ID_COMPT_CHRG == idComptChrg)
                                                                 select new CompteAnalytiqueViewModels
                                                                 {
                                                                     id_ComptAnal = (int)caAffectDom.COMPTE_ANALYTIQUE.ID_COMPT_ANAL,
                                                                     ComptAnal = caAffectDom.COMPTE_ANALYTIQUE.COMPT_ANAL,
                                                                     Designation = caAffectDom.COMPTE_ANALYTIQUE.DESI_COMPT_ANAL,
                                                                     Domaine = caAffectDom.DOMAINE.DESI_DOM,
                                                                     ComptSCF = ccAffectCa.COMPTE_CHARGE_AVEC_CA.COMPT_SCF
                                                                 }).ToList();
                return PartialView(comptAnalVMs);
 
 
 }
Et la vue comme se suite :
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
 
@model IEnumerable<GestionDRA.ViewModels.CompteAnalytiqueViewModels>
<script src="~/Scripts/jquery-2.2.3.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
 
<p>
@Ajax.ActionLink("Create New", "CreateCompteAnalByChrg", new { idComptChrg = Request.QueryString["idComptChrg"] }, 
    new AjaxOptions {
        /*HttpMethod="GET",*/
        UpdateTargetId="divComptAnal",
        InsertionMode=InsertionMode.Replace
    })
</p>
<div id ="divComptAnal">
<table id ="TComptAnal">
    <tr>
 
        <th>
            @Html.DisplayNameFor(model => model.id_ComptAnal)
        </th>
        <th>
 
            @Html.DisplayNameFor(model => model.ComptAnal)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Designation)
        </th>
 
 
        <th>
            @Html.DisplayNameFor(model => model.Domaine)
        </th>
 
        <th>
            @Html.DisplayNameFor(model => model.ComptSCF)
        </th>
        <th></th>
    </tr>
 
@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.id_ComptAnal)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ComptAnal)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Designation)
        </td>
 
        <td>
            @Html.DisplayFor(modelItem => item.Domaine)
        </td>
 
        <td>
            @Html.DisplayFor(modelItem => item.ComptSCF)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
        </td>
    </tr>
}
 
</table>
</div>
maintenant je veux insérer un nouvelle affectation (compte de charge_compte analytique) en ajoutant un compte analytique affecté à un compte de charge existant en cliquant sur lien Create New


Nom : cc-ca-3.png
Affichages : 446
Taille : 40,4 Ko


Une formulaire va être affiché :



Nom : cc-ca-4.png
Affichages : 552
Taille : 47,8 Ko


Je tape les information nécessaires et je clique sur insérer. Je veux lors que je clique sur insérer, exécuter la redirection vers la vue partiel de liste de compte analytique affecté au compte de charge « ListComptAnalByComptChrg » avec le compte analytique inséré. mais le problème lorsque je clique sur insérer, le compte analytique est enregistré en base de données mais sans la redirection vers view partial index: « ListComptAnalByComptChrg ». j'ai besoin de votre aide et n'import quel proposition ou conseil sera la bienvenu

Voilà Sa méthode partiel view result dans le Controller :

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
public PartialViewResult CreateCompteAnalByChrg(int? idComptChrg)
        {
            ViewBag.NumDomList = new SelectList(db.DOMAINE, "NUM_DOM", "DESI_DOM");
            ViewBag.cptChrg = db.COMPT_CHARGE.OfType<COMPTE_CHARGE_AVEC_CA>().Single(c => c.ID_COMPT_CHRG == idComptChrg).COMPT_SCF;
            return PartialView();
        }
 
        //
        // POST: /GestionCompteAnalytique/Create
 
        [HttpPost]
        public PartialViewResult CreateCompteAnalByChrg([Bind(Exclude = "id_ComptAnal")]CompteAnalytiqueViewModels comptAnalVM, int? idComptChrg)
        {
 
            decimal idenCompteAnalytique;
            if (ModelState.IsValid)
            {
                int nbreCompteAnal = db.COMPTE_ANALYTIQUE.Where(c => c.COMPT_ANAL == comptAnalVM.ComptAnal).Count();
 
                COMPTE_ANALYTIQUE compt_analytique = new COMPTE_ANALYTIQUE
                {
                    COMPT_ANAL = comptAnalVM.ComptAnal,
                    DESI_COMPT_ANAL = comptAnalVM.Designation
                };
                if (nbreCompteAnal == 0)
                {
                    db.COMPTE_ANALYTIQUE.Add(compt_analytique);
                    CA_AFFECTATION_DOM caAffectDom = new CA_AFFECTATION_DOM
                    {
                        ID_COMPT_ANAL = compt_analytique.ID_COMPT_ANAL,
                        NUM_DOM = comptAnalVM.num_dom
                    };
 
                    db.CA_AFFECTATION_DOM.Add(caAffectDom);
                    idenCompteAnalytique = compt_analytique.ID_COMPT_ANAL;
                }
                else
                {
                    idenCompteAnalytique = db.COMPTE_ANALYTIQUE.FirstOrDefault(ca => ca.COMPT_ANAL == comptAnalVM.ComptAnal).ID_COMPT_ANAL;//compt_analytique.ID_COMPT_ANAL, 
                }
                comptAnalVM.Id_ComptChrg = idComptChrg;
                CC_AFFECTATION_CA ccAffectCa = new CC_AFFECTATION_CA
                {
                    ID_COMPT_ANAL = idenCompteAnalytique,//compt_analytique.ID_COMPT_ANAL,
                    ID_COMPT_CHRG = (decimal)comptAnalVM.Id_ComptChrg,
                    NUM_DOM = comptAnalVM.num_dom
                };
                db.CC_AFFECTATION_CA.Add(ccAffectCa);
                //}
 
                db.SaveChanges();
 
                return PartialView("ListComptAnalByComptChrg",idComptChrg);
            }
 
            ViewBag.NumDomList = new SelectList(db.DOMAINE, "NUM_DOM", "DESI_DOM", comptAnalVM.num_dom);
            return PartialView(comptAnalVM);
        }
Le code de cette vue partiel est comme suit :

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
 
@model GestionDRA.ViewModels.CompteAnalytiqueViewModels
 
<script src="~/Scripts/jquery-2.2.3.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
 
@using (@Ajax.BeginForm("CreateCompteAnalByChrg", "ComptChrg", new { idComptChrg = Request.QueryString["idComptChrg"] },
    new AjaxOptions { 
        HttpMethod = "POST",
        UpdateTargetId="divComptAnal",
        InsertionMode = InsertionMode.Replace/*,
        Url = Url.Action("ListComptAnalByComptChrg", "ComptChrg", new { idComptChrg = Request.QueryString["idComptChrg"]}) */
    }))
{
 
    @Html.ValidationSummary(true) 
    <div id="divComptAnal">
    <fieldset>
        <legend>CompteAnalytiqueViewModels</legend>
 
        <div class="editor-label">
            @Html.LabelFor(model => model.ComptAnal)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.ComptAnal)
            @Html.ValidationMessageFor(model => model.ComptAnal)
        </div>
 
        <div class="editor-label">
            @Html.LabelFor(model => model.Designation)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Designation)
            @Html.ValidationMessageFor(model => model.Designation)
        </div>
 
        <div class="editor-label">
            @Html.LabelFor(model => model.num_dom)
        </div>
        <div class="editor-field">
            @Html.DropDownListFor(model => model.num_dom, (SelectList)ViewBag.NumDomList, "Selectionnez Domaine d'activté")
            @Html.ValidationMessageFor(model => model.num_dom)
        </div>
 
        <div class="editor-label">
            @Html.HiddenFor(model => model.Id_ComptChrg)
        </div>
 
        <div class="editor-label">
            @Html.LabelFor(model => model.ComptSCF)
        </div>
        <div class="editor-label">
            @Html.ViewBag.cptChrg
        </div>
 
        <p>
            <input type="submit" value="Inserer" />
        </p>
    </fieldset>
   </div>
}
 
<div>
    @Html.ActionLink("Back to List", "Index")
</div>
Merci d’avance