代码之家  ›  专栏  ›  技术社区  ›  lomaxx

具有类Html属性的Spark视图引擎绑定

  •  2
  • lomaxx  · 技术社区  · 13 年前

    我一直在用 Bindings 用spark视图引擎替换了我的一些Html助手方法调用。

    ${Html.EditorFor(x=>x.Username, new{@class = "css-class"})}
    

    将此替换为火花绑定,如下所示:

    结合:

    <element name="Editor">Html.EditorFor(x => x.@For, new {"@*"}) </element>
    

    <Editor For="Password" class="css-class" />
    

    我得到一个错误“命名空间不能直接包含字段或方法等成员”,这是有效的,因为它正在解析为

    Output.Write(Html.EditorFor(x => x.Password, new {class="big"}) );
    

    问题很明显,我需要使用@class而不是class。

    但是,我不能像这样在html属性中指定@class

    <Editor For="Password" @class="css-class" />
    

    我也不能这样说:

    <element name="Editor">Html.EditorFor(x => x.@For, new {@"@*"}) </element>
    

    因为这样,传递的每个html属性都将以@符号作为前缀。

    class HTML属性到spark绑定时,使用它初始化字典参数,以便它不会抛出编译器错误?

    2 回复  |  直到 13 年前
        1
  •  2
  •   RobertTheGrey    13 年前

    你的观察是对的。我认为绑定中的正确语法如下:

    <element name="Editor">Html.EditorFor(x => x.@For, new Dictionary[[string,object]]{{"@*"}}) </element>
    

    而不是

    <element name="Editor">Html.EditorFor(x => x.@For, new {"@*"}) </element>
    

    我希望语法正确,对你有用吗?

    一切顺利, 抢劫

        2
  •  1
  •   Chris Quinn    13 年前

    很抱歉打断了这个问题。但是对于任何开始使用绑定的人来说,如果您使用的是StableSpark1.1.0,我认为在使用#和child::*绑定方面存在一些错误。解决方法是使用开发火花构建。

    如果不是这样,希望罗伯特能纠正我。但如果是这样的话,也许这会让初学者(比如我自己)避免一些最初的困惑。