2016-12-27 2 views
0

Ich versuche, meine Elemente in Listbox zurück zum Controller zu übergeben. Mein Controller ist immer leer. Wenn ich eine andere Variable als List deklariere, bekomme ich nur den ausgewählten Wert zurück. Ich möchte alle Werte zurückgeben.MVC 5 alle Listbox-Artikel an Controller übergeben

Ich habe 2 Listbox, die ich jquery verwenden, um die Elemente zwischen ihnen zu übertragen.

$('#btnRight').click(function (e) { 

    var selectedOpts = $('#CurrentRoles option:selected'); 
    if (selectedOpts.length == 0) { 
     alert("Nothing to move."); 
     e.preventDefault(); 
    } 
    $('#ListOfRoles').append($(selectedOpts).clone()); 
    $(selectedOpts).remove(); 
    e.preventDefault(); 
}); 
$('#btnLeft').click(function(e) { 

    var selectedOpts = $('#ListOfRoles option:selected'); 

    if (selectedOpts.length == 0) { 

     alert("Nothing to move."); 

     e.preventDefault(); 

    } 

    $('#CurrentRoles').append($(selectedOpts).clone()); 

    $(selectedOpts).remove(); 
    e.preventDefault(); 
}); 

hier ist mein Code für Ansicht

@Html.ListBox("CurrentRoles", new SelectList(Model.CurrentRoles, "Key", "Value"), new { id = "CurrentRoles" }) 

public ActionResult Edit(UserRolesmanagement role,List<string> CurrentRoles) 
{ 

    //logic 
} 

Modell

public UserRolesmanagement() 
{ 
    user = new ApplicationUser(); 
    ListOfRoles = new List<IdentityRole>(); 
    CurrentRoles = new Dictionary<string, string>(); 
    ListOfUsers = new List<ApplicationUser>(); 
}  

public ApplicationUser user { get; set; } 
public Dictionary<string,string> CurrentRoles { get; set;} 
public List<IdentityRole> ListOfRoles { get; set; } 
public List<ApplicationUser> ListOfUsers { get; set; } 

Antwort

0

Eigentlich 1 Eingang in Ihre Formulardaten übertragen können nur 1 Wert an die Steuerung. Zum Beispiel:

@using (Html.BeginForm("Cons", "Report")) 
{ 
    <input name="start" id="start" value="1234" />   
    <input name="end" id="end" value="2345" /> 
} 

Und Controller:

public ActionResult Cons(string start, string end) 
{ 
    //blahblahblah 
} 

die simpest Weg für mich, wenn ich also Werteliste übernehmen möchten, um den Eingang mit all diesen Werten durch Komma getrennt hinzufügen. Etwas wie folgt aus:

<input id="CurrentRolesValues" name="CurrentRolesValues" value="" style="display:none"/> 

js für Add-Werte zur Eingabe

var value=""; 
$('#ListOfRoles').children().each(function() { 
    value+=$(this).val()+"," 
}); 
value=value.slice(0, -1); //delete last comma 
$('#CurrentRolesValues').val(value); 

Controller

public ActionResult Edit(UserRolesmanagement role, string CurrentRolesValues) 
{ 
    List<string> roles = CurrentRolesValues.Split(',').ToList(); 
    //logic 
} 
Verwandte Themen