ASP.Net Ouvrir Un Modal à Partir d'un ActionLink
J'ai un GPA Tracker projet de travailler sur, et je vais essayer d'obtenir un modal de pop-up à partir de mes fonctions CRUD. Je l'ai semi de travail dans lequel il renvoie une vue partielle, mais pas dans le formulaire modal. Je pense que ma logique est foiré quelque part ou je ne suis pas à l'aide de JQuery et Ajax correctement ou quelque chose. Toute aide serait appréciée.
Voici ce que j'ai jusqu'à présent.
Maison Contrôleur
HTML:
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Course course = _db.Courses.Find(id);
if (course == null)
{
return HttpNotFound();
}
return PartialView("_Edit", course);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(Course course)
{
if (ModelState.IsValid)
{
_db.Entry(course).State = EntityState.Modified;
_db.SaveChanges();
return RedirectToAction("Index");
}
return View("Index");
}
CourseList Partielle appelée à partir de l'Index
HTML:
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.Id, @data_toggle="modal", @data_target="editCourseModal" } ) |
@Html.ActionLink("Details", "Details", new { id = item.Id }) |
@Html.ActionLink("Delete", "Delete", new { id = item.Id })
</td>
Script à l'intérieur de la CourseList
HTML:
<script type="text/javascript">
$(function() {
$('editCourseModal').on("click", function(e) {
$('formEditCourse').load(this.href, function() {
$('editCourseModal').modal({
keyboard: true
}, 'show');
})
})
$("#editBtn").on("click", function() {
$("#formEditCourse").submit();
});
$("#formEditCourse").on("submit", function(event) {
var $form = $(this);
var options = {
url: $form.attr("action"),
type: $form.attr("method"),
data: $form.serialize()
};
});
});
</script>
Modifier Partielle
HTML:
@model Project3.Models.Course
<div class="modal fade" id="myModal">
<div class="modal-dialog">
<div id="mainContent" class="modal-content col-sm-12">
<div id="myModalContent"></div>
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">Edit Course</h4>
</div>
@using (Html.BeginForm()) { @Html.AntiForgeryToken()
<div class="modal-body">
<div class="form-horizontal">
@Html.ValidationSummary(true, "", new { @class = "text-danger" }) @Html.HiddenFor(model => model.Id)
<div class="form-group">
@Html.LabelFor(model => model.courseCode, htmlAttributes: new { @class = "control-label col-md-3" })
<div class="col-md-9">
@Html.EditorFor(model => model.courseCode, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.courseCode, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.courseName, htmlAttributes: new { @class = "control-label col-md-3" })
<div class="col-md-9">
@Html.EditorFor(model => model.courseName, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.courseName, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.courseHours, htmlAttributes: new { @class = "control-label col-md-3" })
<div class="col-md-9">
@Html.EditorFor(model => model.courseHours, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.courseHours, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.courseLetterGrade, htmlAttributes: new { @class = "control-label col-md-3" })
<div class="col-md-9">
@Html.EditorFor(model => model.courseLetterGrade, new { htmlAttributes = new { @class = "form-control" } }) @Html.ValidationMessageFor(model => model.courseLetterGrade, "", new { @class = "text-danger" })
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn" data-dismiss="modal">Cancel</button>
<input class="btn btn-primary" type="submit" value="Save" />
</div>
</div>
</div>
</div>
}
Lorsque je clique sur les opérations CRUD, il tire juste une vue partielle, j'ai du créer modal de travail, et j'ai essayé de modéliser toutes les opérations CRUD par la suite, mais impossible de le faire fonctionner pour tirer dynamique de données dans les champs.
Encore une fois, toute aide serait grandement appréciée.
- Le POST de formulaire atteindre le contrôleur/action ?
$("#editBtn").
n'est pas sur le formulaire..? - Je l'ai ajouté à la
Edit
forme<button type="submit" class="btn btn-primary" id="editBtn" data-dismiss="modal" value="Save">Save</button>
, mais pas de différence. Il est encore seulement en tirant la partielle _Edit vue et non modale. - Donner des que la page d'édition avec la forme de charges, lorsque vous cliquez sur "soumettre", bouton, vous devriez avoir l'activité du réseau (vérifiez outils de dev sur votre navigateur) et aussi un point de rupture sur votre action..
- Si vous cliquez sur le lien MODIFIER, la boîte de dialogue Modale montre, puis le _Edit page n'a même pas la charge ou à la charge avec pas de données dans les champs de saisie ?
- Je ne peux même pas obtenir la modale de la pop. Il va directement à l'_Edit partielle avec les données correctes dans les champs. Mon problème est d'obtenir la modale de pop-up une fois que j'ai cliquer sur une des fonctions CRUD, sauf que j'ai eu le créer modal de travail.
Vous devez vous connecter pour publier un commentaire.
Ce dernier commentaire aidé..
script: n'a pas de liaison avec le lien correctement..
html : les balises n'étaient pas dans les attributs html auparavant..
myModal
div (tag) ,devrait être sur la même page que le lien ainsi, lorsque vous cliquez sur elle surgit. Mais dans votre code, vous l'avez dans la page d'Édition. Aussi je ne pouvais pas trouverformEditCourse
. Pas sûr de savoir comment ces.Je ne suis pas familier avec le
load
utilisé pour charger la page d'édition. Si cela fonctionne, et vous êtes à l'aise, alors vous devriez continuer avec elle..Autres/Mon approche. De cette façon, je peux charger tous les partielle, des pages dans ce
modal
. La page rendus/remplacé change en fonction du lien.Dans votre CourseList page d'index ou de
Script : lorsque l'utilisateur clique sur le
#editCourseModal
lien nous permettra d'éviter l'action par défaut et remplacer le#mainContnet
div avec la _Edit de page partielle chargé via une requête ajax. Ensuite, nous avons déclenché le show modal.Modifier la page : ce sera toujours le même que vous l'avez, mais uniquement pour contenir l'en-tête, corps et pied de page. La Forme de la partie vous avez restera le même...
Cochez cette lien pour la validation d'un formulaire de questions. Laissez-nous savoir comment il va.
CourseList/Index
suis-je censé mettre quelque chose à l'intérieur de lamaincontent
div? Ou dois-je la laisser vide? Je suis confus, parce que pour ma créer la forme qui a la modale de travail, j'ai ce morceau de code à l'intérieur de monCreate
vue.ActionLink
. au lieu de@id=..editCourseModal
utilisation@class=editCourseModal
. J'ai mis à jour le script aswell avec ce changement.id
doit être unique...C'est probablement la question...