剃刀和HTML助手 [英] Razor and HTML Helpers
问题描述
我想端口旧HTML.Image帮手,我敢肯定,每个人都用在一个点或另一个,我有问题。下面编译罚款:
@ Html.Image(我的-ID,〜/内容/我-img.png,ALT文本)
但是,当我尝试在一个视图中使用它,它简单地写道:
< IMG ALT =替换文本ID =我-IDSRC =/内容/我-img.png/>
和不显示图像。任何人都可以帮助?
这里的HTML.Image帮手code,我使用:
公共静态类ImageHelper
{
公共静态字符串映像(此的HtmlHelper帮手,字符串ID,URL字符串,字符串还有AlternateText)
{
返回图像(辅助,ID,网址,还有AlternateText,NULL);
} 公共静态字符串映像(此的HtmlHelper帮手,字符串ID,URL字符串,字符串还有AlternateText,对象htmlAttributes)
{
//实例化一个UrlHelper
VAR urlHelper =新UrlHelper(helper.ViewContext.RequestContext); //创建标签制造商
VAR建设者=新TagBuilder(IMG); //创建有效身份证件
builder.GenerateId(ID); //添加属性
builder.MergeAttribute(src用户,urlHelper.Content(URL));
builder.MergeAttribute(ALT,还有AlternateText);
builder.MergeAttributes(新RouteValueDictionary(htmlAttributes)); //渲染标签
VAR RET =新MvcHtmlString(builder.ToString(TagRenderMode.SelfClosing));
返回ret.ToHtmlString();
}}
剃刀视图引擎将 @
-blocks自动呈现HTML转义的字符串。结果
要渲染实际的HTML,你需要写在 IHtmlString
实施 @
- 块。
更改方法返回 HtmlString
而不是字符串
。
I'm trying to port the old HTML.Image helper, that I'm sure everyone has used at one point or another, and I'm having issues. The following compiles fine:
@Html.Image("my-id", "~/Content/my-img.png", "Alt Text")
But when I try to use it in a view it simply writes:
<img alt="Alt Text" id="my-id" src="/content/my-img.png" />
And doesn't display the image. Can anyone assist?
Here's the HTML.Image helper code that I'm using:
public static class ImageHelper
{
public static string Image(this HtmlHelper helper, string id, string url, string alternateText)
{
return Image(helper, id, url, alternateText, null);
}
public static string Image(this HtmlHelper helper, string id, string url, string alternateText, object htmlAttributes)
{
// Instantiate a UrlHelper
var urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
// Create tag builder
var builder = new TagBuilder("img");
// Create valid id
builder.GenerateId(id);
// Add attributes
builder.MergeAttribute("src", urlHelper.Content(url));
builder.MergeAttribute("alt", alternateText);
builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
// Render tag
var ret = new MvcHtmlString(builder.ToString(TagRenderMode.SelfClosing));
return ret.ToHtmlString();
}
}
The Razor view engine will automatically HTML-escape strings rendered by @
-blocks.
To render actual HTML, you need to write an IHtmlString
implementation in the @
-block.
Change your method to return HtmlString
instead of string
.
这篇关于剃刀和HTML助手的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!