2015-01-27 7 views
0

나는 다중 선택 목록 상자를 만들고 SELECTED 항목의 합계를 표시하려고합니다. 그래서 여기에 내가 무슨 짓을했는지 :C# MVC4 목록 상자에서 선택한 값의 합계를 얻으십시오

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

목록 상자가 잘 작동 : 나는 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 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 : 나는 내 목록 상자 여기의 숨겨진 대답에서 영감을 얻었다 JQuery Get values from Multi Select List if statement MVC3

답변

0

해야 하는가는 우리가 [I] 연동제를 applay 수 없다는 whene 내가 디버깅이

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; 

    } 
+0

같은 코드 모양 (Selectedroles [i]에서) – Hasna766

+0

에있는 IENUMERABLE 에 배열을 IEnumerable에서 가져 와서 인덱싱을 적용하도록 변경했습니다. – Devesh

+0

좋아요! 그것은 작동합니다! 도와 주셔서 정말 감사합니다! 나는 asp.net-MVC와 C#에 익숙하지 않다. 그리고 나는 그것에 시간을 보냈다 : p 나는 당신의 도움에 감사한다! – Hasna766

관련 문제