ASP.NET MVC3与@ Html.Raw中的图像链接

时间:2013-08-26 08:02:41

标签: html asp.net asp.net-mvc asp.net-mvc-3

美好的一天,我尝试在我的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)

4 个答案:

答案 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&amp;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!