C# 在ASP MVC中打开页面时出现NullException

C# 在ASP MVC中打开页面时出现NullException,c#,sql-server,asp.net-mvc-3,visual-studio-2010,C#,Sql Server,Asp.net Mvc 3,Visual Studio 2010,我正在使用C#和SQLServer2005开发一个ASP.NETMVC3应用程序 我已经创建了一个按钮,当它被点击时,它将显示为一个字段集(并且使用Jquery影响向下滑动) 字段集包含一个表单 当我在这个表单中创建了一个下拉列表时,,,我从FormViewModel调用了一个列表(因为我使用的是实体框架和代码优先的方法) 问题是:当我打开页面时,出现以下异常: NullReferenceException was unhadled by user code. Object reference

我正在使用C#和SQLServer2005开发一个ASP.NETMVC3应用程序

我已经创建了一个按钮,当它被点击时,它将显示为一个字段集(并且使用Jquery影响向下滑动)

字段集包含一个表单

当我在这个表单中创建了一个下拉列表时,,,我从FormViewModel调用了一个列表(因为我使用的是实体框架和代码优先的方法)

问题是:当我打开页面时,出现以下异常:

NullReferenceException was unhadled by user code. Object reference not set to an instance of an object.
它与“PostesItems”有关,我不知道他为什么要求声明对象,因为我从viewModel导入了它

这是视图的代码:

<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage<MvcApplication2.Models.FlowViewModel>" %>




<% using (Html.BeginForm()) { %>
    <%: Html.ValidationSummary(true) %>
    <fieldset class="parametrage">
        <legend>Gestion de Gamme</legend>

        <div><%:Html.Label("Poste :")%><%: Html.DropDownList("SelectedPoste", new SelectList(Model.PostesItems, "ID_Poste", "ID_Poste"))%></div>


         <div><%:Html.Label("Nombre de Passage :")%><%: Html.DropDownList("SelectedGamme", new SelectList(Model.GaItems,"Nbr_Passage","Nbr_Passage") )%></div>




        </fieldset>
         <% } %>
private GammeContext db = new GammeContext();

        //
        // GET: /ProfileGa/
        [HttpGet]
        public ActionResult Index(Profile_Ga profile_ga, Poste poste)
        {

            var viewModel = new FlowViewModel();
            viewModel.PostesItems = db.Postes.ToList();
               viewModel.Profile_GaItems = db.Profil_Gas.ToList();
               viewModel.GaItems = db.Gammes.ToList();
               return View(viewModel);



        }
这是Poste模型:

namespace MvcApplication2.Models
{
    public class Poste
    {
        [Required]
        [Key]
        [Display(Name = "ID Poste :")]
        public string ID_Poste { get; set; }

        [Required]
        [Display(Name = "Nom Poste:")]
        public string nom_Poste { get; set; }

        [Required]
        [Display(Name = "Application :")]
        public string Application { get; set; }

        [Required]
        [Display(Name = "In Poste :")]
        public string In_Po { get; set; }

        [Required]
        [Display(Name = "Out Poste :")]
        public string Out_Po { get; set; }

        [Required]
        [Display(Name = "Etat :")]
        public string Etat { get; set; }

        [Required]
        [ForeignKey("Ligne")]
        [Display(Name = "ID Ligne :")]
        public string ID_Ligne { get; set; }

        [Required]
        [Display(Name = "Mouvement :")]
        public string Mouvement { get; set; }

        public virtual Ligne Ligne { get; set; }
        public IEnumerable<Ligne> Lignes { get; set; }

        public virtual ICollection<Poste> Postes { get; set; }
    }
错误:
错误提示您的
posteItems
为空
EntityFramework
使用延迟加载方法,这意味着如果没有命令它加载相关实体,它将不会加载相关实体

加载帖子的一种方法是:

FlowViewModel model = db.FlowViews... // loading view model
model.PostesItems = db.PostesItems.ToList();

更多信息

因为错误提示您的
posteItems
为空
EntityFramework
使用延迟加载方法,这意味着如果没有命令它加载相关实体,它将不会加载相关实体

加载帖子的一种方法是:

FlowViewModel model = db.FlowViews... // loading view model
model.PostesItems = db.PostesItems.ToList();

更多信息基于聊天室中的讨论:

在索引视图中,有一个js函数,用于从另一个控制器操作加载内容

您的问题出现在
AnnouarController
中。您的方法
Gestion()
返回模型类型为
FlowViewModel
的视图,但模型未初始化。 您应至少更改为:

         public ActionResult Gestion()
         {
               var viewModel = new FlowViewModel();
               viewModel.PostesItems = new SelectList(db.Postes.ToList(), "ID_Poste", "ID_Poste"); 
               return View(viewModel);
         }

基于聊天中的讨论:

在索引视图中,有一个js函数,用于从另一个控制器操作加载内容

您的问题出现在
AnnouarController
中。您的方法
Gestion()
返回模型类型为
FlowViewModel
的视图,但模型未初始化。 您应至少更改为:

         public ActionResult Gestion()
         {
               var viewModel = new FlowViewModel();
               viewModel.PostesItems = new SelectList(db.Postes.ToList(), "ID_Poste", "ID_Poste"); 
               return View(viewModel);
         }


如何填充
posteItems
?能否显示返回此视图的控制器操作?我的基础中有一个表Poste,,,,使用实体框架,,,它将像列表一样填充,,,请查看我的编辑,,,我将放置controller@KirillBestemyanov当然看看我的编辑器,你能把断点放在viewModel.posteItems=db.Postes.ToList()之后吗;看看这个属性中有什么?你是如何填充
posteItems
?你能显示返回此视图的控制器操作吗?我的基础中有一个表Poste,,,,,使用实体框架,,,它将像列表一样填充,,,,,,请看我的编辑,,,我将controller@KirillBestemyanov当然看看我的编辑器,你能把断点放在viewModel.posteItems=db.Postes.ToList()之后吗;看看这个属性里有什么?谢谢你的回答,我想我是在我的控制器里做的,你能看看我的编辑吗我还在这里,你能和我一起看看吗?我在看,我看不出你的代码有什么问题。这是您发布的完整html视图代码吗?这是我希望在单击按钮时显示的视图的完整html代码ZAXX-我原以为ToList会导致立即执行,将db.posteItems转换为操作中的列表,而不是视图中的列表?答案是thx,,,我想我是在我的控制器中执行的,,,你能看一下我的编辑吗?我还在这里,你能和我一起看一下吗?我正在看,我看不出你的代码有什么问题。这是您发布的完整html视图代码吗?这是我希望在单击按钮时显示的视图的完整html代码-我原以为ToList会立即执行,将db.posteItems转换为操作中的列表,而不是视图中的列表?