2011-10-26 3 views
0

Je le modèle de vue suivantBind <select> à viewmodel dans ASP.NET MVC 3

public class FooViewModel 
{ 
    public int SelectedCategoryId { get; set; } 
    public IEnumerable<CategoryDto> AvailableCategories { get; set; } 
} 

à mon avis, je suis en utilisant le modèle jquery pour lier mes données à une balise select

<script type="text/javascript"> 
$(document).ready(function() { 
    var categories = @Model.AvailableCategories.ToJson(); 
    var categoryMarkup = '<option value="${Id}"${Selected}>${Name}</option>'; 
    $.template("categoryTemplate", categoryMarkup); 
    $.tmpl("categoryTemplate", categories).appendTo($('#categories')); 
}); 
</script> 

<select id="categories"></select> 

Qu'est-ce que aurais-je besoin de faire pour m'assurer que ma propriété viewmodel SelectedCategoryId est remplie sur le POST? Je préfère ne pas utiliser le Html.DropDownList si je peux m'en tirer

Répondre

1

Il suffit de l'ajouter dans votre formulaire en utilisant les aides html. Ex.

Html.HiddenFor(o=>o.SelectCategoryId)

Si votre zone de liste déroulante est en train de changer cela, alors tout simplement mettre un événement onchange

 
("#selectId").change(function(){ 
//something like this - untested 
$("#SelectCategoryId").val(this.value); 
}); 

Sauf si vous utilisez un appel .ajax jQuery explicite() dans ce cas, vous devrez ajouter cette valeur les données. Lequel utilisez-vous lorsque vous postez? Je ne vois pas votre formulaire ci-dessus nulle part