创建模型,并在ASP.NET MVC的网格中显示它

时间:2011-01-05 16:23:31

标签: c# asp.net asp.net-mvc

我正在使用SQL Server的所有默认ASP.NET表单身份验证表(aspnet_Profile,aspnet_Roles,aspnet_Users等)。我还在我的数据库中添加了一个Employees表,其中包含一个FK到UserId上的aspnet_Users以创建一对一的关系(UserId是Employees中的PK)。 Employees表包含FirstName,LastName等的列。这是我为用户保留其他信息的一种方式。

我希望网格显示我的员工列表。它需要包含这些信息:

  1. Employees表中的FirstName和LastName
  2. 来自aspnet_Users的用户名
  3. 来自aspnet_Membership的电子邮件
  4. 用户所在角色的逗号分隔列表,使用Roles.GetRolesForUser(username)
  5. 找到

    以下是我要在View页面中执行的操作:

    <%@ Page Language="C#"
        Inherits="System.Web.Mvc.ViewPage<IEnumerable<WebUI.Models.IndexModel>>" %>
    
    <table>
        <tr>
            <th></th>
            <th>Employee</th>
            <th>Username</th>
            <th>E-mail Address</th>
            <th>Roles</th>
        </tr>
        <% foreach (var item in Model) { %>
            <tr>
                <td></td>
                <td><%: item.FirstName %> <%: item.LastName %></td>
                <td><%: item.Username %></td>
                <td><%: item.Email %></td>
                <td><%: item.Roles %></td> <!-- i.e., "Admin, Sales Rep" -->
            </tr>
        <% } %>
    </table>
    

    这是我的模特:

    public class IndexModel
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Username { get; set; }
        public string Email { get; set; }
        public string[] Roles { get; set; }
    }
    

    我的控制员:

    public ActionResult Index()
    {
        return View();
    }
    

    我的问题是,我不知道如何使用该数据加载我的模型并将其传递给我的视图。我对MVC有点新鲜,我做了一些没有运气的搜索,我想我只是在寻找错误的东西。

    那么如何使用来自这些不同表的数据加载我的模型呢?

    编辑:我应该提到我正在使用Entity Framework,因此我可以轻松地从Employees表中提取所有数据。

2 个答案:

答案 0 :(得分:1)

你太近了:

public ActionResult Index()
{
    IEnumerable<IndexModel> model = new List<IndexModel>(); // or from your EF Repository

    return View(model);
}

我个人会将您的模型对象更改为此并相应地更新您的视图:

public class IndexModel
{
    IList<UserInfo> Users { get; set; }
}

public class UserInfo // or whatever makes the most sense
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Username { get; set; }
    public string Email { get; set; }
    public string[] Roles { get; set; }
}

答案 1 :(得分:0)

您将模型传递到控制器中的视图中:

public ActionResult Index()
{
    List<IndexModel> items = new List<IndexModel>();
    // fill out list of items

    return View(items);
}