Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用ASP MVC将对象传递到类中。新手!_C#_Asp.net Mvc - Fatal编程技术网

C# 使用ASP MVC将对象传递到类中。新手!

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

我对asp比较陌生,有一个一直返回null的愚蠢问题。这是我的函数,我认为它非常简单。我一直在读史蒂文·桑德森的书,这本书非常有帮助。无论如何,这是我的函数,我会在后面解释

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);