2010-08-20 4 views
2

Salut J'ai ce code à mon avis ..Comment dois-je obtenir ma boîte dropdownlist valeur au contrôleur en utilisant asp.net mvc

<%=Html.DropDownList("ProductTemplate",new SelectList(Model.ProductTemplate,"Value","Text"))%> 

Je sais si cette case DropDownList est entre BeginForm soumettre I peut en mesure d'accéder à la valeur dans le contrôleur en utilisant collection["ProductTemplate"];

si ce n'est pas dans mon beginForm encore je peux pouvoir accéder à cette valeur sélectionnée dans le contrôleur?

grâce

Répondre

3

Vous pouvez utiliser AJAX pour envoyer la valeur de l'élément sélectionné à une action de contrôleur. Ceci est assez trivial avec jQuery:

$.post('/home/foo', { productTemplate: $('#ProductTemplate').val() }, function(data) { 
    alert(data.success); 
}); 

Et pour accéder à la valeur sélectionnée dans votre action de contrôleur il suffit d'utiliser un paramètre:

[HttpPost] 
public ActionResult Foo(string productTemplate) 
{ 
    // TODO: do something with the selected productTemplate 
    return Json(new { success = true }); 
} 
+0

Comment accéder à cette valeur dans le contrôleur Darin. merci – user354625

+0

@rockers, voir ma mise à jour, vous pouvez utiliser un paramètre d'action nommé 'productTemplate', qui est le même nom que le paramètre envoyé dans la requête AJAX. –

+0

Merci pour votre temps Darin, Ma situation est quelque chose de différent .. J'ai trois grilles à mon avis, chaque grille a commencé à se former .. mais en haut de la page, j'ai cette liste déroulante .. si je vais garder cette dorpdownlist box dans la première grille begin form dans le résultat de l'action Je peux accéder à la valeur, mais je ne suis pas capable de garder cette dropdownlist box dans second beginfrom donc pour éviter que je pense à faire quelque chose comme ça c'est juste ce que je suis ici? Merci – user354625

1

Si le contrôle à ne pas dans la balise de formulaire que vous ne serez pas son valeur dans le contrôleur. La solution de contournement pourrait être.

1) Créer un champ caché à l'intérieur sous forme

2) OnChange événement de votre menu déroulant affecter la valeur sélectionnée dans le champ caché

Modifier

<%=Html.DropDownList("ProductTemplate",new SelectList(Model.ProductTemplate,"Value","Text"),new {@onchange="setVal()"})%> 
. 
. 
<form> 
. 
. 
<input type="hidden" id="myval" name="myval"/> 
. 
. 
</form> 
<script type="text/javascript"> 
function setVal() 
{ 
$("#myval").val($("#ProductTemplate").val()); 
} 
</script> 

maintenant dans votre contrôleur, vous peut obtenir la valeur

+0

Merci ajay, s'il vous plaît pourrait fournir n'importe quel code d'échantillon pour moi merci – user354625

+0

@rockers s'il vous plaît voir la modifier –

Questions connexes