ASP.NET la Liaison de Modèle MVC Avec ListBoxFor & DropDownListFor Aides

J'ai le Modèle suivant:

[Required (ErrorMessage="Server Name Required")]
[StringLength(15, ErrorMessage = "Server Name Cannot Exceed 15 Characters")]
public string servername { get; set; }
[Required(ErrorMessage = "Server OS Type Required")]
public string os { get; set; }
public string[] applications;

Et j'ai utilisé le code suivant pour lier une zone de texte pour le nom du serveur qui fonctionne très bien:

@Html.TextBoxFor(m => Model.servername, new {@class="fixed", @id="serverName"})

Je suis l'aide d'une liste déroulante pour l'OS, et une zone de liste pour les applications, qui ne renseignent pas le modèle correctement sur soumettre.

 @Html.DropDownListFor(m => m.os , new SelectList( ((List<SelectListItem>)ViewData["osTypes"]),"Value","Text"), new { @class = "fixed" })

 @Html.ListBoxFor(m => m.applications, new MultiSelectList((List<SelectListItem>)ViewData["appList"]), new {style="display:none;"})

Des idées sur ce que je fais de mal ici?

Mise à jour:
Je ne pense pas que j'ai donné assez d'informations ici

Dans le contrôleur ViewData["osTypes"] est réglé sur une Liste avec quelques valeurs par défaut tiré à partir d'un WebAPI:

List<string> osTypes = FastFWD_SITE.Helpers.GetJsonObj._download_serialized_json_data<List<string>>(getOsTypeUrl);
List<SelectListItem> osTypeList = new List<SelectListItem>();
foreach (string osType in osTypes)
{
    osTypeList.Add(new SelectListItem { Text = osType });
}
ViewData["osTypes"] = osTypeList;

La ViewData["appList"] est envoyé à une liste vide comme suit:

ViewData["appList"] = new List<SelectListItem>();

Pour la liste des applications, l'utilisateur remplit une zone de texte et frappe un bouton pour ajouter des données à l'application de zone de liste:

ASP.NET la Liaison de Modèle MVC Avec ListBoxFor & DropDownListFor Aides

Jquery pour ajouter un élément à la listbox:

$("#addItem").click(function () {
        var txt = $("#appName");
        var svc = $(txt).val();  //Its Let you know the textbox's value   
        var lst = $("#serverSpecification_applications");
        var ul = $("#itemList");
        var options = $("#serverSpecification_applications option");
        var iList = $("#itemList li");
        var alreadyExist = false;
        $(options).each(function () {
            if ($(this).val() == svc) {
                alreadyExist = true;
                txt.val("");
                return alreadyExist;
            }
        });
        if (!alreadyExist) {
            $(lst).append('<option value="' + svc + '" selected=true>' + svc + '</option>');
            $(ul).append('<li id="' + svc + '"><label>' + svc + '<input type="checkbox" id="' + svc + '" onclick="removeItem(this.id)"/></label>')
            txt.val("");
            return false;
        }           
    });

J'ai le sentiment que je suis en train de faire quelque chose de terriblement mal ici, rien de est utile.

Montrer le contrôleur, vous seul savez ce que vous mettez dans votre viewBags

OriginalL'auteur vesuvious | 2013-10-02