MVC2脚手架 - 看不到任何数据

时间:2011-09-28 19:52:43

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

我在看到MVC2应用程序中的任何数据时遇到问题。

我正在使用您的典型脚手架设置,但当我查看索引或详细信息页面时,我看不到任何数据。

我确信我在这里遗漏了一些简单的东西,因为我在编译或运行时没有错误。

这是我的模型(Users.cs):

public class Users
{
    public string UserName { get; set; }

    [Required(ErrorMessage = "The Customer ID is required.")]
    public string CustomerID { get; set; }
}

以下是重要的2个控制器(UsersController.cs)操作:

public class UsersController : Controller
{

    static List<Users> users = new List<Users>();

    //
    // GET: /Users/

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

    //
    // GET: /Users/Details/5

    public ActionResult Details(Users u)
    {
        return View(u);
    }

}

以下是我的观点。

用户/ Index.aspx的

<table>
<% foreach (var item in Model) { %>

    <tr>
        <td>
            <%= Html.ActionLink("Edit", "Edit", new { id=item.UserName }) %> |
            <%= Html.ActionLink("Details", "Details", item )%> |
            <%= Html.ActionLink("Delete", "Delete", new { id = item.UserName })%>
        </td>
        <td>
            <%= Html.Encode(item.UserName) %>
        </td>
        <td>
            <%= Html.Encode(item.CustomerID) %>
        </td>
    </tr>

<% } %>

</table>

<p>
    <%= Html.ActionLink("Create New", "Create") %>
</p>

用户/ Details.aspx

<fieldset>
    <legend>Fields</legend>

    <div class="display-label">UserName</div>
    <div class="display-field"><%= Html.Encode(Model.UserName) %></div>

    <div class="display-label">CustomerID</div>
    <div class="display-field"><%= Html.Encode(Model.CustomerID) %></div>

</fieldset>
<p>
    <%= Html.ActionLink("Edit", "Edit", new {  id=Model.UserName }) %> |
    <%= Html.ActionLink("Back to List", "Index") %>
</p>

所有页面加载都没有错误,但没有显示数据。如果我运行调试器,则用户列表中有0个条目。

我正在使用SQL Server。我的连接字符串在我的web.config中以典型的方式:   

我的数据库已经包含用户数据。它是使用我用于身份验证的默认asp.net网站管理工具生成的。这非常有效。

那么我做错了什么?如果我需要提供更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:1)

您的UserController(如对OP的评论中所述)实例化您没有数据的用户列表。

如果您想种子数据,请考虑按如下方式更改声明:

public class UsersController : Controller 
{ 

    // static List<Users> users = GetSeededData(); - 
    // don't store a list locally, it isn't necessary if you have a database
    // consider holding the context instead perhaps?
    protected MyContext context = new MyContext();

    // 
    // GET: /Users/ 

    public ActionResult Index() 
    { 
        return View(context.users.ToList()); 
    } 

    // 
    // GET: /Users/Details/5 

    public ActionResult Details(int userId) 
    { 
        return View(context.Users.SingleOrDefault(x => x.UserId.Equals(userId)); 
    } 

} 

关于你的“坚持​​”的快速建议(如果你愿意,请忽略这一点,只是一个友好的提示)......

考虑引入持久层。也就是说,如果要保留数据,请考虑将其存储在数据库,xml文件等中。看看here。它是MVC的一个很好的资源,包含大量的示例和教程,在“模型”部分的下半部分,它向您介绍了实体框架,它可以很好地用于存储,检索和更新数据库中的数据。 / p>