0
我對asp比較陌生,並且有這個愚蠢的問題,它一直返回null。這是我認爲非常簡單的功能。我一直在讀史蒂文桑德森的書,這非常有幫助。反正這裏是我的功能,我將解釋之後將對象傳遞給具有ASP MVC的類。新手!
public ActionResult Menu(string page)
{
Func<Pages, NavLink> makeLink = parentPage => new NavLink
{
Text = parentPage.PageTitle ?? "Home",
RouteValues = new RouteValueDictionary(new
{
controller = "Pages",
action = "List",
}),
IsSelected = (parentPage.PageTitle == page),
IsFirst = (parentPage.PageOrder == 1)
};
List<NavLink> navlinks = new List<NavLink>();
navlinks.Add(makeLink(null));
foreach (var parent in pagesRepository.Pages.Where(x => x.PageParent == 0).OrderBy(x => x.PageOrder))
{
navlinks.Add(makeLink(parent));
}
return View(navlinks);
}
上述功能產生以下錯誤System.NullReferenceException:未設置爲一個對象的實例對象引用。
如果我傳遞一個字符串,而不是我的頁面類,它的工作原理,但我需要訪問我的頁面類的一些屬性,以返回基本值。以下功能不會返回錯誤
public ActionResult Menu(string page)
{
Func<string, NavLink> makeLink = parentPage => new NavLink
{
Text = parentPage ?? "Home",
RouteValues = new RouteValueDictionary(new
{
controller = "Pages",
action = "List",
}),
IsSelected = (parentPage == page)
};
List<NavLink> navlinks = new List<NavLink>();
navlinks.Add(makeLink(null));
foreach (var parent in pagesRepository.Pages.Where(x => x.PageParent == 0).OrderBy(x => x.PageOrder))
{
navlinks.Add(makeLink(parent.PageTitle));
}
return View(navlinks);
}
謝謝,您的幫助將不勝感激!
navlinks.Add(makeLink(null));
所以你必須警惕這一點::
Func<Pages, NavLink> makeLink = parentPage => new NavLink
{
Text = (parentPage != null) ? (parentPage.PageTitle ?? "Home") : "",
RouteValues = new RouteValueDictionary(new
{
controller = "Pages",
action = "List",
}),
IsSelected = (parentPage != null) ? (parentPage.PageTitle == page) : false,
IsFirst = (parentPage != null) ? (parentPage.PageOrder == 1) : 0
};
甚至根本不會用空參數調用它
不敢相信的錯誤。你是一個天才和證明,爲什麼我不應該深夜編程!謝謝Darin! – Tyrone 2010-11-21 05:27:35