我已经在项目中的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" />
无效
答案 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" />
似乎解决了这个问题。