C# 如何使用列表显示一个对象

C# 如何使用列表显示一个对象,c#,asp.net,asp.net-mvc,asp.net-mvc-3,razor,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,Razor,首先,我很抱歉我的英语不好:) 我的对象有一个字符串类型的变量和一个角色不同的selectListItem。 我想显示用户名和每个用户名在dropdownlist中的角色 My class Modele用户: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.ComponentModel.DataAnnotations; using System.We

首先,我很抱歉我的英语不好:)

我的对象有一个字符串类型的变量和一个角色不同的selectListItem。 我想显示用户名和每个用户名在dropdownlist中的角色

My class 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; }
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.ComponentModel.DataAnnotations;
使用System.Web.Mvc;
命名空间ASP.Models.User
{
公共类用户
{
[必需(ErrorMessage=“用户必需”)]
[显示(Name=“Username”)]
公共字符串用户名{get;set;}
[显示(Name=“角色”)]
公共IList角色=新列表();
公共IList角色
{
获取{返回角色;}
设置{roles=value;}
}
}
}
当人们在页面上连接时,我将在数据库中恢复用户名和角色,然后将角色放在一个列表中 控制器:

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);
    }
public ActionResult Modify()
{
连接=新连接();
connection.creationconnection();
DbDataReader=connection.getBDAllPseudoRole();
列表用户=新列表();
User=null;
if(reader.HasRows)
{
while(reader.Read())
{
布尔标志=假;
foreach(用户中的用户userTemp)
{
if(userTemp.UserName.Equals(Convert.ToString(读卡器[0]))
{
user=userTemp;
flag=true;
}
}
如果(标志==false)
user=新用户();
if(reader.GetValue(1)==DBNull.Value)//如果第一行等于null;我们没有角色
{
user.UserName=Convert.ToString(读卡器[0]);
}
其他的
{
user.Username=Convert.ToString(读卡器[0]);
SelectListItem=新建SelectListItem();
item.Text=Convert.ToString(读卡器[1]);
item.Value=Convert.ToString(读卡器[1]);
user.Roles.Add(项);
}
user.Add(用户);
}
}
返回视图(用户);
}
我的看法是:

@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>
}
@model ASP.Models.User
@{
ViewBag.Title=“修改”;
}
修改
@使用(Html.BeginForm())
{
@Html.ValidationSummary(true)
使用者
@LabelFor(user=>user.UserName)
@EditorFor(user=>user.UserName)
@Html.ValidationMessageFor(用户=>user.UserName)
@Html.DropDownList(“角色”,利用率=>utisulateur.roles)
}
我在dropdownlist中显示了一个错误,但我没有找到解决方案

谢谢, Zoner

试试这个

@Html.DropDownList(“角色”,Model.roles)

您还可以向viewmodel添加另一个名为Role的字符串属性

公共字符串角色{get;set;}
并使用强类型的DropDownList,如下所示

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

在我的视图中:@model IEnumerable和@Html.DropDownList(“Roles”,usilisateur.Roles)。非常感谢你的帮助