以下のコードでは、コントローラー アクション コード、ビュー ページ、およびモデル クラスを確認できます。アプリを実行するたびに、エラー メッセージが表示されます: オブジェクト参照がオブジェクトのインスタンスに設定されていません。このメッセージは、次で始まる View lint に表示されますforeach(var item in (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();
}
意見:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<FileInfoModel>>" %>
<%@ Import Namespace="MembershipTest.Models"%>
<fieldset>
<legend>
Upload File:
</legend>
<% using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { @enctype="multipart/form-data"}))
{ %>
<span>Filename:</span>
<input type="file" name="file" id="file" />
<input type="submit" value="Upload" />
<% } %>
</fieldset>
<div id="uploadTable">
<table border="0" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th>
Filename
</th>
<th>
Length
</th>
<th>
LastModified
</th>
</tr>
</thead>
<tbody>
<%
foreach (var item in ((IEnumerable<FileInfoModel>)ViewData["FilesInfoView"]))
{ %>
<tr>
<td>
<%: item.Name %>
</td>
<td>
<%: item.Length %>
</td>
<td>
<%: item.LastWriteTime %>
</td>
</tr>
<% } %>
</tbody>
</table>
</div>
モデル:
public class FileInfoModel
{
public string Name { get; set; }
public double Length { get; set; }
public DateTime LastWriteTime { get; set; }
}