Rendre une vue partielle à l'intérieur d'un Jquery modal popup
La question est : j'ai Vue que sur le modèle d'utilisateurs affiche l'id de l'utilisateur et de ses caractéristiques sur foreach:
@model Project.User
@foreach (User user in Model)
{
<table class="simple-little-table" cellspacing='0'>
<tr>
<td>Id @user.Id </td>
<td>characteristic:@user.Charact</td>
<td><button id="but">User Ban</button></td>
</tr>
</table>
}
Sur buttonClick j'ai Rendu une vue partielle à l'intérieur d'un Jquery modal popup:
<div id="dialog1" title="Dialog Title">@Html.Partial("UserPartial")</div>
$(function () {
$( "#dialog1" ).dialog({
autoOpen: false
});
$("#but").click(function() {
$("#dialog1").dialog('open');
});
});
C'est UserPartial:
<div class = "aaa">
@using (Html.BeginForm("BansUsers", "Bans", FormMethod.Post))
{
<div class="editor-label">
@Html.Label("Patronimyc")
@Html.TextBoxFor(model => model.Surname)
</div>
<div class="editor-label">
@Html.Label("Name")
@Html.TextBoxFor(model => model.Name)
@Html.ValidationMessageFor(model=>model.Name)
</div>
<input type="submit" id="submit" value="Ban User" />
}
Comment faire pour transférer des id d'utilisateur dans la fenêtre popup de foreach? Que, par exemple, dans la fenêtre popup a donné à moi : "vous avez choisi le numéro d'utilisateur 5"
Merci pour les réponses!
OriginalL'auteur Alex Da | 2015-04-30
Vous devez vous connecter pour publier un commentaire.
J'ai créé un violon pour vous montrer comment faire pour obtenir l'ID de votre enregistrement sélectionné:
http://jsfiddle.net/uyg0v4mp/
À expliquer: votre code actuel a aucun moyen de savoir dont le numéro que vous souhaitez sélectionner lorsque vous cliquez sur le bouton "Interdire". Ainsi, dans le violon, j'ai créé un caché d'entrée qui contient l'ID pour chaque enregistrement dans la liste/tableau. Pour les fins de l'écran, vous pouvez cliquer sur le bouton et une alerte vient de vous dire dont le numéro que vous avez sélectionné. Vous devriez être en mesure d'incorporer cette idée à votre propre code.
Ajouter le caché comme suit:
Maintenant, je vous suggère de changer ce code un peu... plutôt que de coder en dur de votre vue partielle directement dans votre "dialog 1" , vous devez insérer via jquery obtenir de l'appel. Nouveau code:
Ci-dessus fait un appel à une action nommée "GetPartialView", et nous sommes de passage dans le " id " de la valeur de l'ID sélectionnées. Enfin, nous utilisons 'html' méthode pour insérer notre vue partielle dans notre boîte de dialogue .
La vue partielle de l'action:
Et c'est tout!
votre vue partielle doit avoir un MODÈLE attaché à elle. Vous utilisez le modèle de la propriété "Id" (@Modèle.Id)
Merci! demain je vais essayer de faire)
si dans le foreach affiche les chambres de modèle chambres et sur buttonclick j'ai besoin partielle : Vous avez choisi la 5ème chambre,veuillez remplir vos données: nom,prénom...... mais partielle sur le modèle client.que dois-je faire?????
Vous n'avez pas de poste le modèle de votre vue partielle, donc je ne suis pas sûr si elle inclut une propriété de ID. Cependant, depuis que nous avons été en mesure de transmettre l'ID de la "GetPartialView" action, de toute évidence, vous avez la possibilité d'inclure l'ID si vous ajustez votre modèle correctement.
OriginalL'auteur Eckert
La plus simple solution consiste à faire un modal
foreach
personneuser
.Dans la Vue ci-dessous j'ai modifié le
button
et modal pour avoir leid
basé suruser.Id
Remarque: Une meilleure solution sera d'avoir une fenêtre modale et de modifier les données dans les champs, selon ce que l'utilisateur a cliqué (ce qui est fait avec
jQuery
ou/etJavaScript
).OriginalL'auteur adricadar
Il n'y a aucun besoin pour un dialogue ici depuis tout ce que vous devez faire est de passer la
id
de l'utilisateur à un contrôleur méthode qui effectue une action de "l'interdiction" de l'utilisateur.Tout d'abord quelques questions à vous html. Vous êtes inutilement la génération d'un tableau distinct pour chaque utilisateur dans le
foreach
boucle et aussi de générer du code html non valide par la duplication de laid
attribut pour le bouton. Votre vue a également@model Project.User
mais je suppose que c'est une faute de frappe et de son vraiment@model IEnumerable<Project.User>
puisque tu ne peux pas énumérer sur un seul objet. Votre vue doit ressembler àRemarque l'utilisation d'un
class
nom plutôt qu'unid
et les utilisateursId
a été ajoutée sur le bouton comme undata-
attribut de sorte qu'il peut être récupéré dans les boutons.click()
gestionnaire.Puis ajouter un script pour gérer le clic sur le bouton
Et la méthode de contrôleur
Note de l'ajax (
$.post()
) va rester sur la même page et de permettre à l'utilisateur de continuer à "interdiction" d'autres utilisateurs. Certaines options à considérer dans lesuccess
de rappel comprennent: (a) la désactivation du bouton c'est à dire$(this).prop('disabled', true);
pour empêcher le bouton de feu de nouveau (b) retrait de la ligne de la table c'est à dire$(this).closest('tr').remove();
ou (c) peut-être en modifiant le bouton de 'onu-ban' l'utilisateur. Vous pouvez également envisager l'affichage d'unconfirm
dialogue et ne faire que la poste si l'action a été confirmé.Désolé, je ne comprends pas votre commentaire. Pourquoi auriez-vous besoin pour afficher une partielle. Vous avez l'id de l'utilisateur à l'interdiction. Quel est le but de la boîte de dialogue et les propriétés
Surname
etName
dans le formulaire? Vous voyez t être ce qui suggère à l'utilisateur de remplir leurs détails, mais vous savez déjà que si vous êtes connecté en tant cela semble juste beaucoup de surcharge inutileOriginalL'auteur