C# 对象引用未设置为局部视图上对象的实例
可能重复:C# 对象引用未设置为局部视图上对象的实例,c#,asp.net,asp.net-mvc,asp.net-mvc-4,partial-views,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Partial Views,可能重复: 在下面的代码中,您可以看到我的控制器操作代码、查看页面和模型类。每次运行应用程序时,我都会收到错误消息:对象引用未设置为对象的实例。此消息出现在视图中,lint以foreach(变量项在(IEnumerable…)开头。如何解决此问题 控制器: public ActionResult Upload() { var FilesInfoData = new List<FileInfoModel>(){
在下面的代码中,您可以看到我的控制器操作代码、查看页面和模型类。每次运行应用程序时,我都会收到错误消息:对象引用未设置为对象的实例。此消息出现在视图中,lint以
foreach(变量项在(IEnumerable…)
开头。如何解决此问题
控制器:
public ActionResult Upload()
{
var FilesInfoData = new List<FileInfoModel>(){
new FileInfoModel(){Name = "sa",Length = 5, LastWriteTime = DateTime.Now},
new FileInfoModel(){Name = "saa",Length = 5, LastWriteTime = DateTime.Now}
};
ViewData["FilesInfoView"] = FilesInfoData;
return View();
}
如果您的局部视图总是在
ViewData
中的FileInfoModel
集合中循环,那么将其模型类型设置为IEnumerable
并将其发送到局部视图不是更好吗
另外,您需要对模型进行空检查,因为在渲染局部视图时,您的集合似乎为空
像这样:
public ActionResult Upload()
{
var model = new List<FileInfoModel>(){
new FileInfoModel(){Name = "sa",Length = 5, LastWriteTime = DateTime.Now},
new FileInfoModel(){Name = "saa",Length = 5, LastWriteTime = DateTime.Now}
};
return View(model);
}
如果您的局部视图总是在
ViewData
中的FileInfoModel
集合中循环,那么将其模型类型设置为IEnumerable
并将其发送到局部视图不是更好吗
另外,您需要对模型进行空检查,因为在渲染局部视图时,您的集合似乎为空
像这样:
public ActionResult Upload()
{
var model = new List<FileInfoModel>(){
new FileInfoModel(){Name = "sa",Length = 5, LastWriteTime = DateTime.Now},
new FileInfoModel(){Name = "saa",Length = 5, LastWriteTime = DateTime.Now}
};
return View(model);
}
你能为此写一些快照示例吗?@user699503检查我的编辑,我添加了一个示例。好的,这正是我想要的,但只需要一个小帮助。当我按照你的建议将所有这些放在模型中时,我的部分视图在aspx页面中打开,而不是在新页面(Upload.ascx)中打开。在aspx页面上,我这样称呼它:
您需要将局部视图传递给模型,如下所示:
(然后取下@
,您没有使用Razor)好的,我这样做了,但我的Upload.aspx仍然作为单独的页面打开,而不是在Index.aspx上,我在那里调用它。你能为此编写一些快照示例吗?@user699503检查我的编辑,我添加了一个示例。好的,这正是我想要的,但只需要一个小帮助。当我按照你的建议将所有这些都放在模型中时,我的部分视图不会在我称之为t的aspx页面中打开han在新页面上(Upload.ascx)。在aspx页面上,我这样称呼它:
你需要将部分视图传递给模型,就像这样:
(然后取下@
,你没有使用Razor)好的,我这样做了,但我的Upload.aspx仍然作为单独的页面打开,而不是在我称之为Index.aspx的地方
public ActionResult Upload()
{
var model = new List<FileInfoModel>(){
new FileInfoModel(){Name = "sa",Length = 5, LastWriteTime = DateTime.Now},
new FileInfoModel(){Name = "saa",Length = 5, LastWriteTime = DateTime.Now}
};
return View(model);
}
<% model IEnumerable<FileInfoModel> %>
if (Model != null)
{
foreach (var item in Model)
{
//do stuff
}
}