Sim*_*ang 5 c# asp.net-mvc .net-3.5
我目前正在使用C#ASP.NET MVC创建一个电子商务网站,并且遇到了一个问题.在产品页面和搜索结果页面等页面上,我必须将数据列表从我的控制器传递到ViewPage,并且工作正常.但是,如果Viewdata等于null,则会发生空引用异常.当它遍历ViewData并显示产品或评论时,它会在视图内部发生.
//ProductController.cs
public ActionResult Products_Sub(string category, int page)
{
ViewData["Products"] = database.GetByCategory(category, page);
return View();
}
Run Code Online (Sandbox Code Playgroud)
//ViewPage.cs - 产品循环
<ul> foreach (E_Store.Models.Product product in ViewData["Products"] as
List<e_store.models.product>)
{%>
<li>
<img alt="<%= product.Title%>" src="<%= product.Thumbnail %>" />
<a href="/<%=product.Category %>/<%= product.SubCategory %>/<%= product.ASIN %>/1">
<%=product.Title%></a>
</li>
}%>
</ul>
Run Code Online (Sandbox Code Playgroud)
到达以下代码时会出现Null Reference Exception:
<ul> foreach (E_Store.Models.Product product in ViewData["Products"] as
Run Code Online (Sandbox Code Playgroud)
我想知道的是,如果确实发生了这种错误,最好的方法是捕获这种类型的错误,而不需要使用if
检查它是否为null的语句.
如果有人知道这样做的好方法,我真的很想知道.
在你的情况下,我会有你的database.GetByCategory(category,page)方法只返回一个空列表而不是null,这样你的foreach语句就不会有任何数据循环但你不会得到一个null异常.
如果您没有处理列表并且该项为null,我们使用
Html.Encode(ViewData.Eval("Field"))
Run Code Online (Sandbox Code Playgroud)
要获取项目的HTML值,如果项目为空,它将返回"".
归档时间: |
|
查看次数: |
9191 次 |
最近记录: |