Utiliser un dropdownlist de filtrer les résultats en MVC
J'ai une application web MVC qui retourne une table. Je veux ajouter un dropdownlist à la page d'affichage des filtres à table à la sélection de l'année. Quelle est la bonne approche?
Je suis en train de créer un dropdownlist que je suis le remplissage à l'aide de JQuery. J'ai créé un onChange de commande de publication, mais je ne sais pas comment récupérer la valeur sélectionnée de la dropdownlist dans le contrôleur.
Voici les morceaux de code que j'ai mis en place:
Dans le contrôleur:
public ActionResult Index()
{
int year = 2012;
var vu_Estimates = dbBudget.vu_Estimates.OrderByDescending(o => o.Expense).ThenBy(o => o.CategoryGroupSortOrder).ThenBy(o => o.SortOrder).Where(o => o.Year == year).ToList();
return View(vu_Estimates);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(FormCollection formCollection)
{
int year = 2012;
var vu_Estimates = dbBudget.vu_Estimates.OrderByDescending(o => o.Expense).ThenBy(o => o.CategoryGroupSortOrder).ThenBy(o => o.SortOrder).Where(o => o.Year == year).ToList();
return View(vu_Estimates);
}
Dans la vue, j'ai le texte suivant:
<script type="text/javascript">
$(document).ready(function () {
$.post("/Estimate/PopulateYears/", { Year: $(this).val() }, function (data) {
populateDropdown($("#ddlYears"), data);
});
});
function populateDropdown(select, data) {
select.html('');
$.each(data, function (id, option) {
select.append($('<option></option>').val(option.value).html(option.name));
});
}
</script>
<h2>Estimates List</h2>
<div>
<% using (Html.BeginForm()) { %>
<select id="ddlYears" onchange="this.form.submit();"></select> | <%: Html.ActionLink("Create New Year of Estimates", "CreateEstimates", "Estimate") %>
<%} %>
</div>
<table>
<tr>
<th></th>
<th>
EstimateID
</th>
<th>
CategoryID
</th>
<th>
Year
</th>
<th>
EstimateAmount
</th>
<th>
CategoryName
</th>
<th>
SortOrder
</th>
<th>
CategoryGroupSortOrder
</th>
<th>
Expense
</th>
</tr>
<% foreach (var item in Model) { %>
<tr>
<td>
<%: Html.ActionLink("Edit", "Edit", new { id=item.EstimateID }) %> |
<%: Html.ActionLink("Delete", "Delete", new { id=item.EstimateID })%>
</td>
<td>
<%: item.EstimateID %>
</td>
<td>
<%: item.CategoryID %>
</td>
<td>
<%: item.Year %>
</td>
<td>
<%: item.EstimateAmount %>
</td>
<td>
<%: item.CategoryName %>
</td>
<td>
<%: item.SortOrder %>
</td>
<td>
<%: item.CategoryGroupSortOrder %>
</td>
<td>
<%: item.Expense %>
</td>
</tr>
<% } %>
</table>
<p>
<%: Html.ActionLink("Create New", "Create") %>
</p>
OriginalL'auteur Matt Ellenburg | 2012-08-08
Vous devez vous connecter pour publier un commentaire.
Premier à donner votre déroulant un nom:
Puis utilisez le
FormCollection
objet à récupérer la valeur:Quelque chose comme ça.
OriginalL'auteur c0deNinja
Je vous suggérons d'utiliser AJAX pour la valeur de dropdownlist et retourner les données nécessaires à la mise à jour de votre page à l'aide de cette demande. Sinon, vous devez recharger votre page à chaque fois que la valeur de sélectionner l'élément change.
Dans votre contrôleur,
OriginalL'auteur emre nevayeshirazi