我在看到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网站管理工具生成的。这非常有效。
那么我做错了什么?如果我需要提供更多信息,请与我们联系。
答案 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>