C# 使用ASP MVC将对象传递到类中。新手!
我对asp比较陌生,有一个一直返回null的愚蠢问题。这是我的函数,我认为它非常简单。我一直在读史蒂文·桑德森的书,这本书非常有帮助。无论如何,这是我的函数,我会在后面解释C# 使用ASP MVC将对象传递到类中。新手!,c#,asp.net-mvc,C#,Asp.net Mvc,我对asp比较陌生,有一个一直返回null的愚蠢问题。这是我的函数,我认为它非常简单。我一直在读史蒂文·桑德森的书,这本书非常有帮助。无论如何,这是我的函数,我会在后面解释 public ActionResult Menu(string page) { Func<Pages, NavLink> makeLink = parentPage => new NavLink { Text = parentPage.Page
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);
}
公共操作结果菜单(字符串页)
{
Func makeLink=parentPage=>新建导航链接
{
Text=parentPage.PageTitle??“主页”,
RouteValues=新建RouteValueDictionary(新建
{
controller=“Pages”,
action=“List”,
}),
IsSelected=(parentPage.PageTitle==页面),
IsFirst=(parentPage.PageOrder==1)
};
List navlinks=新列表();
Add(makeLink(null));
foreach(pagesRepository.Pages.Where(x=>x.PageParent==0.OrderBy(x=>x.PageOrder))中的var parent)
{
添加(makeLink(父级));
}
返回视图(导航链接);
}
上述函数产生以下错误:System.NullReferenceException:对象引用未设置为对象的实例。
如果我传递一个字符串而不是Pages类,它会工作,但是我需要访问Pages类的一些属性才能返回基本值。以下函数不返回错误
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);
}
公共操作结果菜单(字符串页)
{
Func makeLink=parentPage=>新建导航链接
{
Text=parentPage??“主页”,
RouteValues=新建RouteValueDictionary(新建
{
controller=“Pages”,
action=“List”,
}),
IsSelected=(parentPage==第页)
};
List navlinks=新列表();
Add(makeLink(null));
foreach(pagesRepository.Pages.Where(x=>x.PageParent==0.OrderBy(x=>x.PageOrder))中的var parent)
{
Add(makeLink(parent.PageTitle));
}
返回视图(导航链接);
}
谢谢你,我们将非常感谢你的帮助 在此处调用函数时传递的是
null
:
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
};
我不敢相信那个错误。你是一个天才,证明了为什么我不应该在深夜编程!谢谢你,达林!
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);
var navlinks = pagesRepository
.Pages
.Where(x => x.PageParent == 0)
.OrderBy(x => x.PageOrder)
.Select(makeLink);
return View(navLinks);