【问题标题】:MVC 5 pass all listbox item to controllerMVC 5 将所有列表框项传递给控制器
【发布时间】:2016-12-27 06:14:26
【问题描述】:

我正在尝试将列表框中的项目传递回控制器。 我的控制器总是空的。如果我为它声明另一个变量为 List.It 只传回选定的值。我想传回所有的值。

我有 2 个列表框,我使用 jquery 在它们之间传输项目。

$('#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();
});

这是我的查看代码

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

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

   //logic
}

型号

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; }

【问题讨论】:

    标签: c# jquery asp.net-mvc model-view-controller listbox


    【解决方案1】:

    实际上,表单数据中的 1 个输入可以仅将 1 个值传输到控制器。 例如:

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

    和控制器:

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

    因此,如果我想传输值列表,对我来说最简单的方法是添加输入,所有这些值用逗号分隔。像这样的:

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

    用于向输入添加值的js

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

    控制器

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

    【讨论】:

      猜你喜欢
      • 2014-10-17
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-31
      • 1970-01-01
      • 2016-07-18
      相关资源
      最近更新 更多