我有一个显示商店信息的视图,在此视图的底部是部分视图,该视图呈现该商店的特定促销。
在此视图中,我使用以下代码段
呈现给定商店的徽标<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>
我不得不承认这是一个令人反感的解决方案。
答案 0 :(得分:1)
尝试在图片字符串上使用Raw
@System.Convert.ToBase64String(@Html.Raw(Model.RetailerImage))
如果您看到错误消息,则会抱怨非基本64个字符。
这意味着框架的HTML编码了Model.RetailerImage
的内容。防止此默认行为的一种方法是使用Raw
功能。