【问题标题】:MVC Razor use ViewBag as part of dynamic Image linkMVC Razor 使用 ViewBag 作为动态图像链接的一部分
【发布时间】:2015-05-11 21:00:02
【问题描述】:

我有一个 MVC 应用程序和一个 ViewBag 项目列表。我已经使用 Razor 将列表显示在模态弹出窗口中,我希望使用所述列表为列表中的每个项目动态显示图像

我希望有一些类似于“~/Images/ + @ViewBag.List[i] + .jpg”的东西

有没有人知道实现这一目标的方法,因为到目前为止我运气不佳?

我们将不胜感激任何有关完成此任务的帮助!

提前致谢 保罗

【问题讨论】:

    标签: image razor model-view-controller viewbag


    【解决方案1】:
    @foreach(var item in ViewBag.List)
    {
       <img src="~/images/@(item).jpg" />
    }
    

    应该适合你。您遇到的问题是您不需要:

    + @ViewBag.List[i] +
    

    @ViewBag.List[i] 将在没有任何字符串连接的情况下内联工作。

    【讨论】:

    • 非常感谢,只是为了表明有不止一种方法可以做事,我最初使用的是:for (int i = 0; i
    • 这也可以,只需删除字符串 concat。 :-) @(ViewBag.List[i]) 与 foreach 一样正确。 foreach 更漂亮:-)
    • stackoverflow.com/help/someone-answers -- 只是对堆栈的友好介绍 :-)
    • 干杯,我会牢记未来,正如他们所说,每天都是上学日,我总是很高兴学习!
    【解决方案2】:

    你问的问题的答案:

    @foreach(string image in ViewBag.List)
    {
        <img src="~/Images/@(image).jpg" />
    }
    

    但实际上,您应该将其放入您的模型(而不是 ViewBag)中,并在迭代模型中的列表时执行类似的操作。此外,List 是一个可怕的图像列表名称。您或许应该将其命名为 images

    【讨论】:

    • 方法...用我的修复你的帖子 ;-) 干得好。
    • 我通过在项目中对其进行测试来修复它,但感谢您的假设。我不记得我脑海中的确切语法。如果这能让你感觉更好,我赞成你的回答是对的。
    • Psssst.. 您也不需要 ToString()。这是一个动态的,如果它被分配为一个字符串,它就会起作用。即使它在分配时不是字符串,它也会自动使用 .ToString() :-D 每个对象都定义了一个 .ToString() 方法,该方法在执行任何形式的字符串连接或用作字符串中的参数时会自动调用。 Format(...) 使用内联 .ToString() 也可能导致错误... null.ToString() 将抛出 NullReferenceException,其中 @(null).jpg 只会留下损坏的图像链接。所以...还有其他好处。
    猜你喜欢
    • 1970-01-01
    • 2017-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多