2012-05-21 7 views
0

Salut les gens ont une situation très intéressante.asp.net mvc, dropdownlist, jquery

j'ai un viewmodel qui nécessite une mediatype d'un dropdownlist * par la façon dont le dropdownlist est généré par

@Html.DropDownListFor(m => m.MediaType, Model.MediaTypeList) 

et quand je remplir le formulaire à la main toutes les valeurs de la forme sont ok et les fonctions fonctionne comme il se doit.

mais j'ai ensuite implémenté une fonction jquery pour définir la valeur de la liste déroulante à chaque fois que vous téléchargez un fichier, il détecte automatiquement le type de support dont il dispose.

function setValueToDropDown(media){           
    $('#MediaType').attr('disabled',''); 
    var value = media; 
    $('#MediaType').val(value); 
} 

et quand je soumets les domaines de validation me disent que le champ est nécessaire, même si l'dropdownlist est l'option est sélectionnée et quand j'exécute une fonction dans la console pour vérifier la valeur elle est différente de zéro. Donc, je ne comprends pas pourquoi quand Im attribution de la valeur à la liste déroulante dynamiquement mvc ne le reconnaît pas. Je regarde partout et je ne peux pas trouver le problème.

+0

Est-ce que 'value' est la vraie valeur de l'option que vous voulez sélectionner? Ou cela représente-t-il le test dans cette option? – themarcuz

+0

dans ce cas la valeur est celle que je veux sélectionner, je l'ai juste mis comme ça pour y mettre un breakpoint et voir la valeur dans firebug je me rends compte maintenant qu'il a l'air un peu fictif puisque je peux voir le media val depuis le paramètre –

+0

merci à la fin décidé de créer un champ de saisie caché et le mapper à cela dans mon modèle de vue, je passe déjà beaucoup de temps dans ce –

Répondre

1

Cela devrait être suffisant pour activer et définir la valeur de votre élément <select>.

var setValueToDropDown = function(media) { 
    $('#MediaType').prop('disabled', false).val(media); 
}; 

Vous devez utiliser .prop() pour gérer des propriétés comme disabled depuis la version 1.6. Assurez-vous également que vous exécutez le script après DOM prêt etc;)

1

Je ne sais pas comment le script que vous exécutez ressemble à ce qu'il fait. Mais peut-être le scénario est à la recherche de l'valueattribut au lieu de la propriété value

Essayez d'utiliser ceci:

function setValueToDropDown(media){           
    $('#MediaType').attr('disabled',''); 
    var value = media;     // Why do you save media in value...? 
    $('#MediaType').attr("value", value); 
}