【发布时间】:2016-06-29 09:33:45
【问题描述】:
我的 MVC 应用程序有几个复选框项目,但是,我需要为每个复选框项目显示唯一的图像,每个项目都是唯一的,所以唯一的图像也应该是。
这是我尝试过的:
查看(索引.cshtml):
//MULTIPLE CHECK BOX
for (int i = 0; i < Model.CheckBoxItems.Count; i++) //this line throws an exception (null)
{
<img src="@Url.Content(Model.CheckBoxItems[i].ImageUrl)" />
<div>
@Html.HiddenFor(m => m.CheckBoxItems[i].CBName)
@Html.LabelFor(l => l.CheckBoxItems[i].CBIsSelected, Model.CheckBoxItems[i].CBName)
@Html.CheckBoxFor(r => r.CheckBoxItems[i].CBIsSelected, false);
</div>
}
控制器(HomeController.cs):
[HttpGet]
public ActionResult Index()
{
ModelVariables model = new ModelVariables()
{
CheckBoxItems = Repository.CBFetchItems()
};
return View(model);
}
模型(ModelVariables.cs):
public class ModelVariables
{
//CHECKBOX
public List<Item> CheckBoxItems { get; set; }
}
public class Item
{
public string CBName { get; set; }
public bool CBIsSelected { get; set; }
public string ImageUrl { get; set; }
}
public static class Repository
{
public static List<Item> CBFetchItems()
{
return new List<Item>()
{
new Item(){ CBName = "Girls?" },
new Item(){ CBName = "Dudes?" },
new Item(){ CBName = "Animals?" },
new Item() { ImageUrl = "~/Assets/ass.PNG"}
};
}
}
当你复制/粘贴这段代码并运行它时,你会得到一个空异常错误。
【问题讨论】:
-
您可以先告诉我们错误出现在哪一行。 (另外
App_Data中的文件被屏蔽了,无法提供服务,需要放到别的目录下) -
@MattiVirkkunen 嘿,我更新了问题并在引发异常的行旁边添加了一条评论,然后我通过创建一个名为“Assets”的新文件夹更新了路径,但我仍然遇到了问题。
-
...我没有说目录名称与您当前的问题有关,这只是一个 FYI。
-
@ScuddleWuddles,您是否在视图中设置了
@model ModelVariables? -
您的异常可能在
<img src="@Url.Content(Model.CheckBoxItems[i].ImageUrl)" />引发,因为并非所有Item对象都包含ImageUrl的值(它不在for代码行)
标签: c# asp.net-mvc checkbox