如何用列表显示一个对象

本文关键字:一个对象 列表显示 何用 | 更新日期: 2023-09-27 18:26:33

首先,对不起我的英语不好:)。

我的对象有一个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; }
        }
    }
}

当人们在页面上连接时,我会在数据库中恢复用户名和角色,然后将角色放在一个列表中控制器:

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

我有一个错误要与下拉列表一起显示,我找不到解决方案。

谢谢,分区

如何用列表显示一个对象

尝试这个

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

您还可以在视图模型中添加另一个名为Role 的字符串属性

public string Role{ get; set; },并使用如下所示的强类型DropDownList

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