Ich versuche, dieses Tutorial here zu folgen, aber versuche, es in einem Modal auszuführen. Ich rufe im Grunde die Indexansicht innerhalb meines Modals auf (nicht sicher, ob das Best Practice ist oder nicht). Jedes Mal, wenn ich auf einen Header klicke, um zu sortieren oder irgendetwas anderes, verschwindet das Modal und die Seite wird zur Indexansicht umgeleitet. Ist das möglich mit der Art und Weise, wie ich das tue und wenn nicht, vielleicht kann jemand eine alternative Lösung vorschlagen, ich bin irgendwie neu in all dem!Sortieren, Filtern und Blättern in einem Modal
Hier ist der Teil, der eine Schaltfläche enthält, die das Modal aufruft.
@model IEnumerable<ReconciliationApp.Models.IReconciliationForm>
<div class="img-responsive center-block" id="formButtons">
<div>
<div class="btn-group row col-sm-12">
<button type="button" class="btn btn-primary" data-toggle="modal" data-target=".browse-modal-lg">Browse</button>
</div>
<div class="btn-group row col-sm-12">
<button type="button" class="btn btn-primary">Modify</button>
<button type="button" class="btn btn-primary">Delete</button>
<button type="button" class="btn btn-primary">New</button>
</div>
</div>
</div>
<div class="modal fade browse-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title">Browse Members</h4>
</div>
<div class="container-fluid" style="padding-left: 50px;">
@Html.EditorForModel("Index")
</div>
</div>
</div>
</div>
Hier ist meine Indexansicht
@model IEnumerable<ReconciliationApp.Models.CSReconForm>
@{
ViewBag.Title = "Modal";
}
<h2>CSRecon Browse</h2>
<p>
@Html.ActionLink("Create New", "Create")
</p>
<table class="table">
<tr>
<th>
@Html.ActionLink("Member ID", "Index", new { sortOrder = ViewBag.DateSortParm })
</th>
<th>
@Html.ActionLink("Brand ID", "Index", new { sortOrder = ViewBag.MemberSortParm })
</th>
<th>
@Html.ActionLink("First Name", "Index", new { sortOrder = ViewBag.BrandSortParm })
</th>
<th>
@Html.ActionLink("Last Name", "Index", new { sortOrder = ViewBag.FirstNameSortParm })
</th>
<th>
@Html.ActionLink("Processed By", "Index", new { sortOrder = ViewBag.LastNameSortParm })
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.MemberID)
</td>
<td>
@Html.DisplayFor(modelItem => item.BrandID)
</td>
<td>
@Html.DisplayFor(modelItem => item.FirstName)
</td>
<td>
@Html.DisplayFor(modelItem => item.LastName)
</td>
<td>
@Html.DisplayFor(modelItem => item.ProcessedBy)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.Id }) |
@Html.ActionLink("Details", "Details", new { id = item.Id }) |
@Html.ActionLink("Delete", "Delete", new { id = item.Id })
</td>
</tr>
}
</table>
Und der Teil meiner Controller, der verwendet wird,
wirdpublic class CSReconFormsController : ApplicationBaseController
{
private ReconciliationContext db = new ReconciliationContext();
private ApplicationDbContext adb = new ApplicationDbContext();
// GET: CSReconForms
public ActionResult Index(string sortOrder)
{
var usersContext = new ApplicationDbContext();
var users = usersContext.Users.Select(u => u.UserName).ToList();
ViewBag.Users = users;
ViewBag.Title = "Modal";
ViewBag.DateSortParm = String.IsNullOrEmpty(sortOrder) ? "dateCreated_desc" : "";
ViewBag.MemberSortParm = sortOrder == "MemberId" ? "memberId_desc" : "MemberId";
ViewBag.BrandSortParm = sortOrder == "BrandId" ? "brandId_desc" : "BrandId";
ViewBag.FirstNameSortParm = sortOrder == "FirstName" ? "firstName_desc" : "FirstName";
ViewBag.LastNameSortParm = sortOrder == "LastName" ? "lastName_desc" : "LastName";
var reconForms = from s in db.CSReconForms select s;
switch (sortOrder)
{
case "MemberId":
reconForms = reconForms.OrderBy(s => s.MemberID);
break;
case "memberId_desc":
reconForms = reconForms.OrderByDescending(s => s.MemberID);
break;
case "BrandId":
reconForms = reconForms.OrderBy(s => s.BrandID);
break;
case "brandId_desc":
reconForms = reconForms.OrderByDescending(s => s.BrandID);
break;
case "FirstName":
reconForms = reconForms.OrderBy(s => s.FirstName);
break;
case "firstName_desc":
reconForms = reconForms.OrderByDescending(s => s.FirstName);
break;
case "LastName":
reconForms = reconForms.OrderBy(s => s.LastName);
break;
case "lastName_desc":
reconForms = reconForms.OrderByDescending(s => s.LastName);
break;
case "dateCreated_desc":
reconForms = reconForms.OrderByDescending(s => s.WhenCreated);
break;
default:
reconForms = reconForms.OrderBy(s => s.WhenCreated);
break;
}
return View(reconForms.ToList());
}
...
}
Wenn es etwas anderes, das Sie vielleicht denken Sie nützlich sein könnten, Fragen sind willkommen! Danke im Voraus!
Wenn Sie einen modal und bleiben auf der gleichen Seite verwenden möchten, dann aJAX verwenden, um die 'sortOrder' Wert auf ein Verfahren zu schreiben, die das DOM in seinem Erfolg Rückruf eine Teilansicht und aktualisieren zurückgibt (keine Links, die eine Weiterleitung machen) –