2012-03-02 6 views
0

まず、私の悪い英語にすみませます:)。リストでどのようにオブジェクトを表示する

Myオブジェクトには、String型の変数とselectListItemという異なる役割を持つ変数があります。 私は私のクラスModeleユーザー

...ユーザー名を表示し、それぞれにドロップダウンリストで自分の役割をユーザ名希望:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.ComponentModel.DataAnnotations; 
using System.Web.Mvc; 

namespace ASP.Models.User 
{ 
    public class User 
    { 
     [Required(ErrorMessage = "User required")] 
     [Display(Name = "Username")] 
     public String Username { get; set; } 

     [Display(Name = "Roles")] 
     public IList<SelectListItem> roles = new List<SelectListItem>(); 
     public IList<SelectListItem> Roles 
     { 
      get { return roles; } 
      set { roles = value; } 
     } 
    } 
} 

人々がページに接続するとき、私は、データベース内のユーザ名を回復します私は1つのリスト でのcontrolerが役割を入れた後と役割、:

public ActionResult Modify() 
     { 
      Connection connection = new Connection(); 
      connection.creationConnexion(); 
      DbDataReader reader = connection.getBDAllPseudoRole(); 
      List<User> users=new List<User>(); 
      User user = null; ; 
      if (reader.HasRows) 
      { 
       while (reader.Read()) 
       { 
        Boolean flag = false; 
        foreach (User userTemp in users) 
        { 
         if (userTemp.UserName.Equals(Convert.ToString(reader[0]))) 
         { 
          user = userTemp; 
          flag = true; 
         } 
        } 
        if(flag==false)  
         user = new user(); 

        if (reader.GetValue(1) == DBNull.Value)//if first row equals null; we dont have the roles 
        { 
         user.UserName = Convert.ToString(reader[0]); 

        } 
        else 
        { 
         user.Username = Convert.ToString(reader[0]); 
         SelectListItem item = new SelectListItem(); 
         item.Text = Convert.ToString(reader[1]); 
         item.Value = Convert.ToString(reader[1]); 
         user.Roles.Add(item); 
        } 
        user.Add(user); 
       } 
    } 
return View(users); 
    } 

マイビュー:

@model ASP.Models.User 
@{ 
    ViewBag.Title = "Modify"; 
} 

<h2>Modify</h2> 

@using (Html.BeginForm()) 
{ 
    @Html.ValidationSummary(true) 
    <fieldset> 
     <legend>User</legend> 

     <div class="editor-label"> 
      @Html.LabelFor(user => user.UserName) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(user => user.UserName) 
      @Html.ValidationMessageFor(user => user.UserName) 
     </div> 

     <div class="editor-label"> 
      @Html.DropDownList("roles", utilisateur => utilisateur.Roles) 
     </div> 

     <input type="submit" value="Connexion"/> 

    </fieldset> 
} 

ドロップダウンリストで表示するには1つのエラーがあり、解決策が見つかりません。

おかげで、 Zoners

+0

私の見解では、@model IEnumerable と@ Html.DropDownList( "roles"、utilisateur.Roles)です。ご助力ありがとうございます – Zoners

答えて

1

はあなたにも役割

public string Role{ get; set; }と呼ばれるあなたのviewmodelに別の文字列プロパティを追加し、

以下のように強く型付けされたDropDownListコントロールを使用することができ、この

@Html.DropDownList("roles", Model.Roles)

を試してみてください

@Html.DropDownListFor(model=>model.Role, Model.Roles)

関連する問題