带有自定义HTML帮助程序的Spark View引擎

时间:2010-07-28 06:51:07

标签: asp.net-mvc-2 html-helper spark-view-engine

我已经在项目中的System.Web.Mvc中添加了一些自己的帮助程序,并使用默认的asp.net mvc视图引擎。通过定义帮助器

namespace System.Web.Mvc
{
    public static class XSSHelper
    {
        public static string h(this HtmlHelper helper, string input)
        {
            return AntiXss.HtmlEncode(input);
        }

        public static string Sanitize(this HtmlHelper helper, string input)
        {
            return AntiXss.GetSafeHtml(input);
        }

        public static string hscript(this HtmlHelper helper, string input)
        {
          return AntiXss.JavaScriptEncode(input);
        }
    }
}

我使用<%= Html.h("<h1>some string</h1>") %>

来调用它

现在我正在使用spark视图引擎,我似乎无法让它工作。我收到以下错误:

  

'System.Web.Mvc.HtmlHelper'不包含'h'的定义,也没有扩展方法'h'可以找到'System.Web.Mvc.HtmlHelper'类型的第一个参数(你是否遗漏了) using指令或汇编引用?)'

如何让Spark看到额外的助手?

编辑:我还添加了_global.spark与<using namespace="myApp" />无效

3 个答案:

答案 0 :(得分:3)

当我的项目全面展开时,我的_global.spark通常会看起来像这样。我建议在开始时这样做以避免这些问题:

<use namespace="Spark"/>
<use namespace="System.Web.Mvc"/>
<use namespace="System.Web.Mvc.Ajax"/>
<use namespace="System.Web.Mvc.Html"/>
<use namespace="System.Web.Routing"/>
<use namespace="System.Linq"/>
<use namespace="System.Collections.Generic"/>

<use assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<use assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<use assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<use assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<use assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<use assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<use assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<use assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />

答案 1 :(得分:0)

确保在spark配置部分的web.config中注册了System.Web.Mvc.HtmlHelper

答案 2 :(得分:0)

在_global.spark文件中添加<using namespace="System.Web.Mvc" />似乎解决了这个问题。