美好的一天,我尝试在我的ASP.NET MVC3项目中使用Url.Action
内的@Html.Raw
操作链接。没有@Html.Raw
,一切正常,但是由于图片无法在页面上显示,我尝试在Raw中使用Html.Encode
,但是它会在页面上显示裸露的HTML。
@Html.Raw(<a href="@Url.Action("ActionName", "Controller", new {id = 1})" target="_blank">
<img src="@Url.Content("~/Content/Images/simpleImage.png")"/>
</a>)
为什么它不能呈现正确的代码呢?当我将鼠标悬停在有图像的地方时,它会弹出下一个代码:sitename.com/Controller/@Url.Action(
我试图屏蔽“这不是帮助
修改
此操作链接是数据库查询的一部分,我将在下一个显示:
@Html.Raw(model.FieldWithHtmlCharactersInDatabase)
答案 0 :(得分:1)
你需要传递字符串,试试这个
@Html.Raw("<a href='" + @Url.Action("ActionName", "Controller", new {id = 1})' " + target='_blank'>
<img src='" + @Url.Content("~/Content/Images/simpleImage.png") " + "/>
</a>")
答案 1 :(得分:1)
尝试使用此字符串传递字符串变量并正确转义"
。
@Html.Raw("<a href=\"" +
Url.Action("ActionName", "Controller", new {id = 1})
+ "\" target=\"_blank\"><img src=\"" +
Url.Content("~/Content/Images/simpleImage.png") + "\"/></a>")
但是我不明白为什么你想要这个@Html.Raw
,这会给你相同的输出;
<a href="@Url.Action("ActionName", "Controller", new {id = 1})" target="_blank">
<img src="@Url.Content("~/Content/Images/simpleImage.png")" />
</a>
<强>更新强>
更新问题后,您正在尝试从数据库字符串执行Razor代码。我建议您在StackOverFlow上查看其中的一些问题;
ASP.net MVC: Execute Razor from DB String?
Pulling a View from a database rather than a file
请注意,您的原始问题与您想要的完全不同。
答案 2 :(得分:0)
以下代码:
<img src="@Url.Action("ActionName", "Controller", new {id = 1, width=100, height=100})" alt="" />
将产生此输出:
<img src="Controller/ActionName/1?width=100&height=100" alt="" />
你将获得与Raw相同的周围Action助手:
<img src="@Html.Raw(Url.Action("ActionName", "Controller", new {id = 1, width=100, height=100}))" alt="" />
所以这一定是Razor / MVC中的一个错误。我发现一个(乏味和丑陋)的解决方法是:
@Html.Raw("<img src=\"" + Url.Action("ActionName", "Controller", new {id = 1, width=100, height=100}) + "\" alt=\"\" />" )
希望微软能解决这个问题。
答案 3 :(得分:0)
如果将来有人遇到相同的问题,对我来说,它可以删除图像字符串的〜infront!