如果顯示沒有可用數據,問題是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);
})
%>
通知的觀點是如何強類型到產品的集合。
平原,簡單,強類型。
UPDATE:
如這裏的註釋部分要求是增加編輯和刪除鏈接到每一行的例子:
<%= 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我寫這說明這些概念。
這是如何回答他的問題的?當然,使用強類型視圖是一個好主意,但最終,你的代碼和他的代碼是否相同?如果您指定了產品列表以外的其他東西,則兩者都會崩潰。除此之外,你的代碼是否有區別(我只是沒有發現它)? – Alxandr 2010-11-16 12:19:10
區別在於'Html.Grid((列表)ViewData [「產品」])和'Html.Grid (Model)'。使用ViewData是醜陋的,需要轉換並取決於控制器操作中使用的實際名稱。 –
2010-11-16 12:39:07
可以發送一些示例編輯和刪除使用mvc貢獻網格請我新來這 – 2010-11-16 17:06:24