我的MVC应用程序有几个复选框项,但是,我需要为每个复选框项显示唯一的图像,每个项都是唯一的,因此也应该有一个独特的图像。
这是我尝试的内容:
查看(Index.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"}
};
}
}
当您复制/粘贴此代码并运行它时,您将收到一个空异常错误。
答案 0 :(得分:0)
只有一个itens包含图像 url,其他人的值为null。当url.content尝试处理空值时,您可能会收到错误。
编辑2:添加可能解决方案的代码 抱歉,Url.Content也不能接受空字符串,因此以前的编辑不起作用。
我猜你需要在你的剃刀代码中加一个if来检查没有图片链接。
if( Model.CheckBoxItems[i].ImageUrl != null ) {
<img src="@Url.Content(Model.CheckBoxItems[i].ImageUrl)" />
}