请求主视图时出现部分视图错误

时间:2014-12-15 01:24:17

标签: c# asp.net-mvc razor partial-views

我有一个显示商店信息的视图,在此视图的底部是部分视图,该视图呈现该商店的特定促销。

在此视图中,我使用以下代码段

呈现给定商店的徽标
<div class="controls">
     <img src="data:image;base64,@System.Convert.ToBase64String(Model.RetailerImage)" width="80" height="80" />
</div>

现在,当我运行它时,加载促销的部分视图会引发错误

System.Web.dll中出现“System.Web.HttpException”类型的异常,但未在用户代码中处理 附加信息:执行处理程序'System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper'的子请求时出错。

我偏见视图的底部

 <fieldset class="well">
       @Html.Action("ListRetailerPromotions", "Promotion", Model)
  </fieldset>

调用此控制器

   [AuthorizeRolesAttribute(RoleType.Retailer, RoleType.Administrator)]
    public ActionResult ListRetailerPromotions(Retailer retailer)
    {
        PromotionViewModel pvm = new PromotionViewModel
        {
            RetailerId = retailer.RetailerID,
            Promotions = UnitOfWork.Promotion.GetPromotionsForRetailer(retailer.RetailerID).ToList()
        };

        return PartialView(pvm);
    }

但是当我得到死亡的黄色屏幕时,有些人会说错误消息显示为

输入不是有效的Base-64字符串,因为它包含非基本64个字符,两个以上的填充字符或填充字符中的非法字符。

但是,如果我评论部分视图所有作品都是预期的。

更新 我通过在引用如下之后将RetailerImage设置为null来实现它的工作

<div class="control-group">
                <label class="control-label" for="WebAddress">
                    Preview
                </label>
                <div class="controls">
                    <img src="data:image;base64,@System.Convert.ToBase64String(Model.RetailerImage)" width="80" height="80" />
                </div>
            </div>
            {
                Model.RetailerImage = null;

            }
</div>

我不得不承认这是一个令人反感的解决方案。

1 个答案:

答案 0 :(得分:1)

尝试在图片字符串上使用Raw

@System.Convert.ToBase64String(@Html.Raw(Model.RetailerImage))

如果您看到错误消息,则会抱怨非基本64个字符。

这意味着框架的HTML编码了Model.RetailerImage的内容。防止此默认行为的一种方法是使用Raw功能。