我在mvc 2.0中使用了mvccontrib网格 我想在gridview中绑定一个表...到目前为止,我的编码是....我不是没有正确或错误......
Homecontroller.cs:
public ActionResult List(int? page)
{
using (ProductDataContext db = new ProductDataContext())
{
ViewData["product"] = db.Products.ToList().AsPagination(page ?? 1, 10);
return View("product");
}
}
我还创建了列表视图....... 我应该在Index.aspx中编写什么编码
到目前为止,我使用了这种编码,它无法正常工作......
<% Html.Grid((List<Product>)ViewData["product"])
.Columns(column =>
{
column.For(c => c.CategoryID);
column.For(c => c.SupplierID);
}).Render();
%>
它显示没有可用的数据。或者还有其他编码吗?
我的问题是我想在mvccontrib网格中绑定表。
答案 0 :(得分:0)
如果它显示没有可用数据,则问题是db.Products.ToList().AsPagination(page ?? 1, 10)
只返回没有元素(空集合)。至于为什么会发生这种情况,你不可能从你提供的信息中说出来。它在很大程度上取决于此ProductDataContext
的实现以及数据存储中的可用数据。
话虽如此,我建议您使用强类型视图:
public ActionResult List(int? page)
{
using (ProductDataContext db = new ProductDataContext())
{
var products = db.Products.ToList().AsPagination(page ?? 1, 10);
return View("product", products);
}
}
所以你的观点变成了:
<%@ Page
Language="C#"
Inherits="System.Web.Mvc.ViewPage<IEnumerable<AppName.Models.Product>>" %>
<%@ Import Namespace="AppName.Models" %>
<%= Html.Grid<Product>(Model)
.Columns(column =>
{
column.For(c => c.CategoryID);
column.For(c => c.SupplierID);
})
%>
请注意视图是如何强烈键入产品集合的。
简单,简单,强烈打字。
更新:
根据评论部分的要求,这是一个向每行添加编辑和删除链接的示例:
<%= Html.Grid<Product>(Model)
.Columns(column =>
{
column.For("TableLinks").Named("");
column.For(c => c.CategoryID);
column.For(c => c.SupplierID);
})
%>
和TableLinks.ascx
部分:
<%@ Control
Language="C#"
Inherits="System.Web.Mvc.ViewUserControl<AppName.Models.Product>" %>
<%@ Import Namespace="AppName.Models" %>
<td>
<%: Html.ActionLink<ProductsController>(c => c.Edit(Model.Id), "Edit") %> |
<% using (Html.BeginForm<ProductsController>(c => c.Destroy(Model.Id))) { %>
<%: Html.HttpMethodOverride(HttpVerbs.Delete) %>
<input type="submit" value="Delete" />
<% } %>
</td>
当然,假设您的ProductsController中存在以下操作:
public ActionResult Edit(int id)
...
[HttpDelete]
public ActionResult Destroy(int id)
我还邀请您查看我写的sample MVC application,其中说明了这些概念。