1

美好的一天,我正在尝试在我的 ASP.NET MVC3 项目中使用操作Url.Action链接@Html.Raw。没有 ,一切正常@Html.Raw,但图像无法在页面上显示,我尝试Html.Encode在 Raw 中使用,但随后它向我展示了页面上的裸 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)
4

4 回答 4

2

你需要传递字符串,试试这个

@Html.Raw("<a href='" + @Url.Action("ActionName", "Controller", new {id = 1})' " + target='_blank'>
                <img src='" + @Url.Content("~/Content/Images/simpleImage.png") " + "/>
            </a>")
于 2013-08-26T08:17:20.633 回答
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:从 DB 字符串执行 Razor?

从数据库而不是文件中提取视图

请注意,您的原始问题与您想要的非常不同。

于 2013-08-26T08:17:36.470 回答
0

以下代码:

<img src="@Url.Action("ActionName", "Controller", new {id = 1, width=100, height=100})" alt="" />

将产生此输出:

<img src="Controller/ActionName/1?width=100&amp;height=100" alt="" />

您将获得与 Raw 相同的周围动作助手:

<img src="@Html.Raw(Url.Action("ActionName", "Controller", new {id = 1, width=100, height=100}))" alt="" />

所以这一定是 Razor/MVC 中的一个 bug。我发现的一种(乏味且丑陋的)解决方法是:

@Html.Raw("<img src=\"" + Url.Action("ActionName", "Controller", new {id = 1, width=100, height=100}) + "\" alt=\"\" />" )

希望微软能解决这个问题。

于 2013-12-15T20:59:36.833 回答
0

如果将来有人遇到同样的问题,对我来说,删除图像字符串前面的 ~ 是有效的!

于 2019-03-01T12:55:23.743 回答