2010-07-28 61 views
1

我在我的项目中添加了一些我自己的助手到System.Web.Mvc,并让它使用默认的asp.net mvc视图引擎。通过定义像带有自定义HTML助手的Spark View引擎

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>") %>

现在,我使用的火花视图引擎我似乎无法得到这个工作。我收到以下错误:

'System.Web.Mvc.HtmlHelper' does not contain a definition for 'h' and no extension method 'h' accepting a first argument of type 'System.Web.Mvc.HtmlHelper' could be found (are you missing a using directive or an assembly reference?)'

如何获取Spark以查看其他帮助?

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

回答

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" /> 
0

确保System.Web.Mvc.HtmlHelper在火花配置部分中你的web.config注册。

+0

收到的错误“HtmlHelper是一种类型而不是命名空间” – jdiaz 2010-07-28 08:08:52

0

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