我正在通過Pro ASP.NET MVC 3 Framework的SportsStore示例進行工作。在第8章的開始,我正在責成編輯我ProductController的類,添加。凡行,如下所示:檢查內部SQL查詢和MVC3項目中的null時遇到問題
public ViewResult List(string category, int page = 1)
{
ProductsListViewModel viewModel = new ProductsListViewModel
{
Products = repository.Products
.Where(p => category == null || p.Category == category)
.OrderBy(p => p.ProductID)
.Skip((page - 1) * PageSize)
.Take(PageSize),
PagingInfo = new PagingInfo
{
CurrentPage = page,
ItemsPerPage = PageSize,
TotalItems = repository.Products.Count()
},
CurrentCategory = category
};
return View(viewModel);
}
當我運行代碼,我收到以下錯誤:
Exception Details: System.Data.SqlServerCe.SqlCeException: The specified argument
value for the function is not valid. [ Argument # = 1,Name of
function(if known) = isnull ]
上在下面的代碼塊中的foreach行:
@model SportsStore.WebUI.Models.ProductsListViewModel
@{
ViewBag.Title = "Products";
}
@foreach (var p in Model.Products)
{
Html.RenderPartial("ProductSummary", p);
}
<div class="pager">
@Html.PageLinks(Model.PagingInfo, x => Url.Action("List", new {page = x}))
</div>
我已經搜查好位,並在多個地方發現了大量的引用來this StackOverflow post,但改變查詢
.Where(p => category == null ? true : p.Category == category)
沒有效果。
的一些基本信息:
- 這是使用Razer的視圖引擎和C#的MVC3項目。
- 我的SQL Compact 4.0數據庫中的所有項目都有一個類別。
- 註釋類別== null位使代碼運行得很好。
- 我上面給出的第二個版本是從他們的網站下載的源代碼。
它沒有空檢查工作,但我擔心,如果我只是繼續前進,我可能會遇到問題後。有沒有人有任何想法,我怎樣才能解決它?
你在哪一行發生錯誤? – Yasser 2012-08-08 17:43:10
發生此錯誤: @foreach(Model.Products中的var p) – 2012-08-08 17:45:08
我對MVC3一無所知,但是如果您提到SQL Compact Edition,那麼這可能是null/DBNull的問題(只是猜測......) )? – Gorgsenegger 2012-08-08 19:04:17