来自MVC2的HTML助手与Razor的兼容性

时间:2010-11-20 20:20:47

标签: asp.net-mvc-3 razor

现有的HTMLHelpers是否可以与Razor配合使用?如果是这样,Razor是否会对HTMLHelpers的设计或使用做出任何改变?

THX

2 个答案:

答案 0 :(得分:3)

是的,现有的助手与Razor完美搭配。例如:

@Html.ActionLink("foo bar", "foo")

Razor的变化是,现在您可以像这样定义内联助手:

@helper FooBar(string foo)
{
    <div>Hello @foo</div>
}

并像这样使用:

@FooBar("World")

经典 HTML帮助者而言,Razor什么都没改变,它只是一个视图引擎,所以你可以像往常那样继续编写助手:

public static class HtmlExtensions
{
    public static MvcHtmlString FooBar(this HtmlHelper htmlHelper, string value)
    {
        var builder = new TagBuilder("div");
        div.SetInnerText(value);
        return MvcHtmlString.Create(div.ToString());
    }
}

在Razor中使用:

@Html.FooBar("some value")

答案 1 :(得分:0)

Razor默认执行HTML编码。

因此,如果您的任何MVC2 HtmlHelpers发出标记,如果他们返回String而不是MvcHtmlString,它们可能无效。