在c#MVC4中获取列表框中所选值的总和

Posted

技术标签:

【中文标题】在c#MVC4中获取列表框中所选值的总和【英文标题】:getting the sum of the selected values in a listbox in c# MVC4 【发布时间】:2015-03-25 20:53:47 【问题描述】:

我正在尝试创建一个多选列表框并显示其 SELECTED 项的总和。所以在这里我做了什么: 我创建了一个 ViewModel

public class profilViewModel

  public IEnumerable<SelectListItem> roles  get; set; 
  public IEnumerable<String> Selectedroles  get; set; 

这里是控制器:

public   profilViewModelController : Controller

    private Context db = new Context();
    //
    // GET: /profilViewModel/
    [HttpGet]
    public ActionResult Index()
    
        List<SelectListItem> listSelectListItem = new List<SelectListItem();
        foreach (role role in db.role)
        
            SelectListItem selectListItem = new SelectListItem()
            
                Text = role.role_name,
                Value = role.role_value.ToString(),
                Selected = role.IsSelected
            ;
            listSelectListItem.Add(selectListItem);
        

        profilViewModel profilViewModel = new profilViewModel();
        profilViewModel.roles = listSelectListItem;
        return View(profilViewModel);
    

这是我的模型:

 public class role
  
    [Key]
    public int role_id  get; set; 
    public string role_name  get; set; 
    public int role_value  get; set; 
    public Boolean IsSelected  get; set; 
   

列表框工作正常,问题是我想显示所选项目的总和,我试过这个方法:

public int Index(IEnumerable<int> Selectedroles)
    
        if (Selectedroles == null)
         return 0; 
        else
        
            int result = 0;
           for (int i = 0; i < Selectedroles.Count(); i++)
      

            result += Convert.ToInt32(Selectedroles);
            return result;
        

      

但是转换不起作用,我错过了什么吗?谢谢你的帮助!

PS:我的列表框从 hidden 的答案中得到启发 JQuery Get values from Multi Select List if statement MVC3

【问题讨论】:

【参考方案1】:

你的代码应该是这样的

  public int Index(IEnumerable<int> Selectedroles)
  
    if (Selectedroles == null)
        return 0; 
    else
    
      var arr = Selectedroles.ToArray();
        int result = 0;
       for (int i = 0; i < arr.Length; i++)
        
            result += Convert.ToInt32(arr[i]);
        
   // another way
      foreach(var r in Selectedroles)
                  result += r;
     return result;

  

【讨论】:

当我调试它说我们不能在 IENUMERABLE 上应用 [i] 索引(在 Selectedroles[i] 中) 我已经做出改变,将数组从 IEnumerable 中取出,然后应用索引。 太棒了!有用 !非常感谢你的帮助!我是 asp.net-MVC 和 c# 的新手,我在这方面花了几个小时:p 感谢您的帮助! 我认为你也可以在不将其设为数组的情况下这样做,在这种情况下你必须使用 foreach statemenet,我也会在我的解决方案中进行更新 是否可以将其变成复选框列表而不是列表框?

以上是关于在c#MVC4中获取列表框中所选值的总和的主要内容,如果未能解决你的问题,请参考以下文章

从下拉列表中更新所选值的 mysql 记录

在选择框中选择不同的值和 id

使用 Angular 复制带有 UI 和所选值的下拉列表

MFC组合框控件下拉列表式如何读取所选值和设置默认选项

如何更改组合框选定值的显示顺序

Ember JS:选择具有所选值的列表