【问题标题】:Parse ViewBag with image content to Partial View将带有图像内容的 ViewBag 解析为部分视图
【发布时间】:2017-04-30 12:34:20
【问题描述】:

我编写的代码应该为每种语言返回 2 个横幅文件。总共有 6 个横幅文件(.jpg 文件)。 2 个横幅文件应显示在索引页面上。当用户是法语用户时,应显示法语的 2 个横幅文件。我的家庭控制器中有以下方法:

 public ActionResult AdRotator()
    {
        //nog opvullen met banners
        var userlanguage = Request.UserLanguages;


        if (userlanguage.Equals("nl-nl || nl-be"))
        {
            ViewBag.File1 = Server.MapPath("~") + "Content/Images/Banners/Banner_NL.jpg";
            ViewBag.File2 = Server.MapPath("~") + "Content/Images/Banners/Banner2_NL.jpg";
            // ViewBag.File1 =  Url.Content("~/Content/Images/Banners/Banner_NL.jpg");
            // ViewBag.File2 = Url.Content("~/Content/Images/Banners/Banner2_NL.jpg");
            // ViewBag.File1 = File("~/Content/images/Banners/Banner_NL.jpg", "image/jpg");

            //view meegeven omdat aangemaakte partialview anders niet gevonden wordt na creatie
            return PartialView("~/Views/Home/_AdRotator.cshtml");

        }
        else
        {
            if(userlanguage.Equals("fr-fr||fr-lu"))
            {
                ViewBag.File1 = Server.MapPath("~") + "Content/Images/Banners/Banner_FR.jpg";
                ViewBag.File2 = Server.MapPath("~") + "Content/Images/Banners/Banner2_FR.jpg";
                return PartialView("~/Views/Home/_AdRotator.cshtml");
            }
            else
            {
                ViewBag.File1 = Server.MapPath("~") + ("~/Content/Images/Banners/Banner_EN.jpg");
                ViewBag.File2 = Server.MapPath("~") + ("~/Content/Images/Banners/Banner2_EN.jpg");
                return PartialView("~/Views/Home/_AdRotator.cshtml");
            }
        }
    }

cmets 中的代码是我之前用过但没有用的代码。

在索引页面上,我只渲染部分视图:

@Html.Partial("~/Views/Home/_AdRotator.cshtml");

局部视图:

<img src="@ViewBag.File1" alt="File1" /> <img src="@ViewBag.File2" alt="File2" />

运行网站时,会显示文本“File1”和“File2”。我在这里做错了什么?

在返回调用上创建局部视图 _AdRotator 并导航到它时,会显示以下错误消息:

Error message

由于这个错误,我想用它来代替 AdRotator() 方法:

return PartialView("~/Views/Home/_AdRotator.cshtml");

这可能是问题吗?我在 stackoverflow 上环顾四周,发现了类似的问题,但无法解决我的问题。

【问题讨论】:

    标签: c# html asp.net-mvc razor viewbag


    【解决方案1】:

    我认为您正在渲染局部视图而不调用控制器中的操作。

    而不是@Html.Partial("~/Views/Home/_AdRotator.cshtml")

    试试:@Html.Action('AdRotator', 'Home')

    这应该调用AdRotator 操作,填充 ViewBag 并显示图像。

    【讨论】:

    • 哦,是的,你是对的。我自己的愚蠢错误。谢谢!
    • @L.T 没问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    • 2012-10-09
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 2013-05-02
    • 2017-02-10
    相关资源
    最近更新 更多