【问题标题】:How to show a unique image for each checkbox item?如何为每个复选框项目显示唯一的图像?
【发布时间】: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
  • 您的异常可能在&lt;img src="@Url.Content(Model.CheckBoxItems[i].ImageUrl)" /&gt; 引发,因为并非所有Item 对象都包含ImageUrl 的值(它不在for 代码行)

标签: c# asp.net-mvc checkbox


【解决方案1】:

只有一个项目包含图像 url,其他的有一个空值。当 url.content 尝试处理空值时,您可能会遇到错误。

Edit2:为可能的解决方案添加代码 抱歉,Url.Content 也不能​​接受空字符串,所以之前的编辑不会起作用。

我猜你需要在你的 Razor 代码中添加一个 if 检查来处理没有图片链接。

if( Model.CheckBoxItems[i].ImageUrl != null ) {         
    <img src="@Url.Content(Model.CheckBoxItems[i].ImageUrl)" />
}

【讨论】:

  • 添加了一些代码,您可以尝试看看这是否能解决您的问题
  • 不知道我之前在想什么,但是 url.content 也不接受空字符串。因此,您需要检查 razor 中是否存在 null url,或者确保每个项目都包含一个图片链接,就像 Stephen 在上面的 cmets 中建议的那样
  • woa 试过了,效果很好,斯蒂芬也有,但他只显示了 url,你的实际上加载了图像,gj 伙计,你做对了!
猜你喜欢
  • 1970-01-01
  • 2021-04-29
  • 2017-11-03
  • 1970-01-01
  • 1970-01-01
  • 2013-04-27
  • 1970-01-01
  • 2011-01-08
  • 2015-05-15
相关资源
最近更新 更多