如何为每个复选框项显示唯一的图像?

时间:2016-06-29 00:12:48

标签: c# asp.net-mvc checkbox

我的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"}
        };
    }     
}

当您复制/粘贴此代码并运行它时,您将收到一个空异常错误。

1 个答案:

答案 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)" />
}