J'essaie de déclencher une méthode d'action pour l'événement onchange pour la liste déroulante. Comment puis-je faire cela sans utiliser jquery onchange.
@Html.DropDownList("Sortby",
new SelectListItem[]
{
new SelectListItem() { Text = "Newest to Oldest", Value = "0" },
new SelectListItem() { Text = "Oldest to Newest", Value = "1" }})
Merci
Tu peux le faire
@Html.DropDownList("Sortby", new SelectListItem[] { new SelectListItem()
{
Text = "Newest to Oldest", Value = "0" }, new SelectListItem() { Text = "Oldest to Newest", Value = "1" } , new
{
onchange = @"form.submit();"
}
})
Si vous ne voulez pas jquery, vous pouvez le faire avec javascript:
@Html.DropDownList("Sortby", new SelectListItem[]
{
new SelectListItem() { Text = "Newest to Oldest", Value = "0" },
new SelectListItem() { Text = "Oldest to Newest", Value = "1" }},
new { @onchange="CallChangefunc(this.value)"
});
<script>
function CallChangefunc(val){
window.location.href = "/Controller/Actionmethod?value=" + val;
}
</script>
@Html.DropDownListFor(m => m.State,
new SelectList(ViewBag.StateList, "StateId", "StateName"),
"Select state",
new { @class = "form-control", @onchange="FillCity()" })
function FillCity() {
var stateId = $('#State').val();
$.ajax({
url: '/Employees/FillCity',
type: "GET",
dataType: "JSON",
data: { State: stateId},
success: function (cities) {
$("#City").html(""); // clear before appending new list
$.each(cities, function (i, city) {
$("#City").append(
$('<option></option>').val(city.CityId).html(city.CityName));
});
}
});
}
Vous pouvez essayer ceci si vous transmettez une valeur à la méthode d'action.
@Html.DropDownList("Sortby", new SelectListItem[] { new SelectListItem() { Text = "Newest to Oldest", Value = "0" }, new SelectListItem() { Text = "Oldest to Newest", Value = "1" }},new { onchange = "document.location.href = '/ControllerName/ActionName?id=' + this.options[this.selectedIndex].value;" })
Supprime la chaîne de requête en cas d'absence de paramètre.
essaye ça :
@Html.DropDownList("Sortby", new SelectListItem[] { new SelectListItem()
{ Text = "Newest to Oldest", Value = "0" }, new SelectListItem()
{ Text = "Oldest to Newest", Value = "1" }},
new { onchange = "document.location.href = '/ControllerName/ActionName?id=' + this.options[this.selectedIndex].value;" })
Si vous avez une vue en liste, vous pouvez faire ceci:
Définir une liste de sélection:
@{
var Acciones = new SelectList(new[]
{
new SelectListItem { Text = "Modificar", Value =
Url.Action("Edit", "Countries")},
new SelectListItem { Text = "Detallar", Value =
Url.Action("Details", "Countries") },
new SelectListItem { Text = "Eliminar", Value =
Url.Action("Delete", "Countries") },
}, "Value", "Text");
}
Utilisez la liste de sélection définie pour créer un identifiant différent pour chaque enregistrement (rappelez-vous que l'identifiant de chaque élément doit être unique dans une vue) et appelez une fonction javascript pour l'événement onchange (incluez les paramètres dans l'exemple d'url et la clé d'enregistrement):
@Html.DropDownList("ddAcciones", Acciones, "Acciones", new { id =
item.CountryID, @onchange = "RealizarAccion(this.value ,id)" })
fonction onchange peut être quelque chose comme:
@section Scripts {
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
<script type="text/javascript">
function RealizarAccion(accion, country)
{
var url = accion + '/' + country;
if (url != null && url != '') {
window.location.href = url ;
}
}
</script>
@Scripts.Render("~/bundles/jqueryval")
}