По какой-то причине моя веб-страница ASP.NET MVC3 продолжает бросать мне NullReferenceExceptions. Странные вещи заключаются в том, что я не могу определить источник проблемы. Независимо от того, что я пишу, на мой взгляд, первая часть кода (в данном случае мой foreach), как говорят, вызывает эту ошибку.NullReferenceException независимо от того, что я делаю на мой взгляд
мой взгляд выглядит следующим образом:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<SkyLearn.Models.StartpageDataViewModel>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Skylearn - Startside
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="SideContent" runat="server">
<%foreach (var category in Model.CurrentUsersCategories)
{%>
<div class="homecategory"><div class="homecategoryicon"></div><%: Html.DisplayFor(Title => category.Title)%></div>
<%}%>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<%: ViewBag.Message %>
</asp:Content>
И это ViewModel:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
using System.Web.Mvc;
using System.Web.Security;
using SkyLearn.Areas.Categories.Models;
using SkyLearn.Areas.Categories.Controllers;
namespace SkyLearn.Models
{
public class StartpageDataViewModel
{
public List<Category> CurrentUsersCategories { get; set; }
public StartpageDataViewModel()
{
CurrentUsersCategories = new List<Category>();
}
}
}
и, наконец, методы я использую от 2 разных контроллеров:
это тот, помещает данные в объект viewmodel:
public ActionResult Index()
{
if (Request.IsAuthenticated)
{
StartpageDataViewModel model = new StartpageDataViewModel();
MembershipUser currentuser = Membership.GetUser();
List<Category> categories = new List<Category>();
categories = accountcontroller.getCategoriesByRoles((Guid)currentuser.ProviderUserKey);
foreach (Category category in categories)
{
model.CurrentUsersCategories.Add(category);
}
ViewBag.Message = "Velkommen til Skylearn Video Tutorials " + currentuser.UserName + "!";
return View(model);
}
else
{
ViewBag.Message = "Log venligst ind for at benytte Skylearn Video Tutorials";
return View();
}
}
И это тот, который получает некоторые данные:
public List<Category> getCategoriesByRoles(Guid userid)
{
List<Category> categoriesbyrole = new List<Category>();
MembershipUser user = Membership.GetUser(userid);
string[] roles = Roles.GetRolesForUser(user.UserName);
List<Category> categories = categorycontroller.getCategories();
foreach (string role in roles)
{
foreach (Category category in categories)
{
if (role == category.Title)
{
categoriesbyrole.Add(category);
}
}
}
return categoriesbyrole;
}
независимо от того, что я делаю, я получаю текущую ошибку на Еогеасп на мой взгляд:
System.NullReferenceException был необработанное по код пользователя
Message = Ссылка на объект не установлена в экземпляр объекта.
Источник = App_Web_nvi5brwn StackTrace: в ASP.views_home_index_aspx .__ RenderContent3 (HtmlTextWriter __w, управление parameterContainer) в C: \ Users \ AronChan \ Desktop \ Dropbox \ SkyLearn \ Skylearn Сайт (Aron sikkerhedskopi) \ SkyLearn \ Views \ Home \ Индекс .aspx: строка 8 в System.Web.UI.Control.RenderChildrenInternal (HtmlTextWriter writer, ICollection children) в System.Web.UI.Control.RenderChildren (HtmlTextWriter writer) в System.Web.UI.Control.Render (HtmlTextWriter) в System.Web.UI.Control.RenderControlInternal (HtmlTextWriter writer, адаптер адаптера адаптера) в System.Web.UI.Control.RenderControl (HtmlTextWriter writer, адаптер адаптера адаптера) в System.Web.UI.Control. RenderControl (HtmlTextWriter писатель) в ASP.views_shared_site_master._ Рендер _control1 (HtmlTextWriter __w, управления parameterContainer) в C: \ Users \ AronChan \ Desktop \ Dropbox \ SkyLearn \ Skylearn Сайт (Aron sikkerhedskopi) \ SkyLearn \ Просмотры \ Shared \ Site.Master: строка 34 в System.Web.UI.Control.RenderChildrenInternal (HtmlTextWriter writer, ICollection children) в System.Web.UI.Control.RenderChildren (HtmlTextWriter writer) в System.Web.UI. Control.Render (HtmlTextWriter writer) в System.Web.UI.Control.RenderControlInternal (HtmlTextWriter writer, адаптер адаптера адаптера) в System.Web.UI.Control.RenderControl (HtmlTextWriter writer, ControlAdap тер адаптер) на System.Web.UI.Control.RenderControl (HtmlTextWriter писатель) в System.Web.UI.Control.RenderChildrenInternal (HtmlTextWriter писатель, ICollection детей) в System.Web.UI.Control.RenderChildren (HtmlTextWriter писатель) в System.Web.Mvc.ViewPage.Render (HtmlTextWriter writer) в System.Web.UI.Control.RenderControlInternal (HtmlTextWriter writer, адаптер адаптера адаптера) в System.Web.UI.Control.RenderControl (HtmlTextWriter writer, ControlAdapter адаптер) в System.Web.UI.Control.RenderControl (HtmlTextWriter writer) на System.Web.UI.Page.ProcessRequestMain (Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
InnerException:
Я попробовал все, что я мог думать. Помогите мне xD
Вы абсолютно правы и настоящий господин сэр! Спасибо :) – AronChan