IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

question sur les vues partielles


Sujet :

ASP.NET MVC

  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Points : 133
    Points
    133
    Par défaut question sur les vues partielles
    Bonjour à tous,

    Voici mon problème,

    j'ai une vue qui quand on la charge affiche un tableau avec des liens. Quand on clique sur un lien, j'aimerais afficher la même page avec un autre tableau à côté du premier avec d'autres liens, puis quand on clique sur le 2eme lien afficher un autre tableau avec les attributs de l'objet sélectionné.

    Mon problème est que je recharge la page donc le premier tableau avec le 2ème.

    Dois-je mettre mon 2ème tableau sur une vue partielle et mon 3ème sur une autre vue partielle pour ne recharger que ces vues partielles ? La vue principale est elle une vue classique ou une master page ?

    Merci pour votre aide
    La Solution AGILE de Cartographie et d'Urbanisation des Systèmes d'Information éditée et développée par la société AB+ SOFTWARE
    https://www.abplussoftware.fr

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 201
    Points : 196
    Points
    196
    Par défaut
    Je ne suis pas sur de comprendre ta questions, mais je vais essayer d'y répondre

    Donc ce que je comprend, c'est que tu affiches une liste, quand on clic sur un élément, ça affiche a coté (un autre tableau) une sous liste, puis quand on clic sur un élément de cette sous liste, ça affiches des propriétés?

    Dans ce cas, ce que je ferai c'est un Model, qui contiendrai deux propriétés nullable: Selection1 - Selection2.

    En fonction des valeurs dans ces propriétés, tu peux faire un if() dans ta vue, qui affiche une vue action partiel, qui prend la valeur de la selection pour affiche ce qu'il faut.

    J’illustre pour que ce soit plus simple:

    le Model:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class SelectionModel {
    	public int? Selection1 { get; set; }
    	public int? Selection2 { get; set; }
    }
    le Controller:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public ActionResult Index()
    {
    	var model = new SelectionModel();
    	if(!String.IsNullOrEmpty(Request["Selection1"]))
    		model.Selection1 = Convert.ToInt64(Request["Selection1"]);
    	if(!String.IsNullOrEmpty(Request["Selection2"]))
    		model.Selection2 = Convert.ToInt64(Request["Selection2"]);
    	return View(model);
    }
    La View:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @model SelectionModel
    <table>...<!-- la premiere liste -->..</table>
    @if(Model.Selection1.HasValue)
    {
    	@Html.Action("SousListe", new { Valeur = Model.Selection1.Value });
     
    	@if(Model.Selection2.HasValue)
    	{
    		@Html.Action("Details", new { Valeur = Model.Selection2.Value });
    	}
    }
    C'est un peu brut, mais l'idée y est je pense

  3. #3
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Points : 133
    Points
    133
    Par défaut
    pour mieux expliquer,

    j'ai une vue qui comporte un tableau chargé dynamiquement avec dans la première colonne des noms d'objets et dans la deuxième un icone contenant un lien.

    Voici l'actionResult de ma page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public ActionResult PageObjets(QIQObjets model)
            {
                model.ListeObjets = ech.GetObjets();
                return View(model);
            }
    et le code de ma vue :
    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
    @model ClientLegerSoluQIQv2.Models.QIQObjets
     
     
    @{
        ViewBag.Title = "PageObjets";
        Layout = "~/Views/Shared/_LayoutSQ.cshtml";
    }
     
     
    <div id="divTableObjets">
     
        <table id="tableObjets">
            <tr>
                <th>Nom de l'objet</th>
                <th></th>
            </tr>
            @foreach (var item in Model.ListeObjets)
                {
                        <tr>
                            <td>@item.nomObjet</td>
                            <td><a href="@Url.Action("PageObjets2", "Home" , new { Nom = item.nomObjet })"><img src="@Url.Content("../../Content/Images/loupe-icone.png")"/></a></td>
                        </tr>
                 }
        </table>
     
    </div>
    Quand je clique sur le lien, je lance un actionResult qui va récupérer la liste des sous objets correspondant et l'affiche dans un tableau à côté du premier. Ce tableau contient comme le premier un icone avec un lien.

    Le problème est que dans mon 2ème actionResult si je ne passe pas la liste d'objet du premier tableau j'ai une erreur null donc j'aimerais quand je clique sur le lien du premier tableau seulement recharger le deuxième tableau et pas toute la page.

    Je sais pas si j'ai été assez clair

    Merci encore
    La Solution AGILE de Cartographie et d'Urbanisation des Systèmes d'Information éditée et développée par la société AB+ SOFTWARE
    https://www.abplussoftware.fr

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 201
    Points : 196
    Points
    196
    Par défaut
    Alors à ce moment il faut que tu te tournes vers de l'ajax.

    C'est très simple avec MVC3, fait une recherche ici ou sur la msdn je suis certain que tu trouvera comment faire

  5. #5
    Membre confirmé Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Points : 577
    Points
    577
    Par défaut
    voila quelques piste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public ActionResult PageObjets(QIQObjets model)
            {
                model.ListeObjets = ech.GetObjets();
                return PartialView(model);
            }
    et
    utiliser
    à place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href="@Url.Action("PageObjets2", "Home" , new { Nom = item.nomObjet })"><img src="@Url.Content("../../Content/Images/loupe-icone.png")"/></a>
    Dans l'ajacOption tu défini UpdateTargetId qui est l'id du <div/> (ou autre élément) dont le contenu sera mis à jour avec la partialView

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question sur les vues
    Par freud dans le forum SQL
    Réponses: 1
    Dernier message: 16/05/2010, 15h09
  2. [SP-2007] Question sur les vues SharePoint
    Par mikedavem dans le forum SharePoint
    Réponses: 9
    Dernier message: 17/04/2009, 10h04
  3. question sur les vues et l'optimisation de requêtes
    Par zaboug dans le forum Requêtes
    Réponses: 8
    Dernier message: 25/03/2009, 16h28
  4. Question sur les vues matérialisées
    Par delirium dans le forum Administration
    Réponses: 9
    Dernier message: 29/12/2008, 11h42
  5. [SSAS][2k5] question sur les vues
    Par geof dans le forum SSAS
    Réponses: 4
    Dernier message: 18/03/2008, 11h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo