【问题标题】:Spark View Engine Bindings with Class Html Attribute具有类 Html 属性的 Spark 视图引擎绑定
【发布时间】:2011-05-08 11:41:43
【问题描述】:

我一直在使用带有 spark 视图引擎的 Bindings 功能来替换我的很多 Html 辅助方法调用。

我遇到的一个问题是我想定义一个 css 类来传递给辅助方法的匿名字典参数,我通常会这样做:

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

将其替换为 spark Binding 如下所示:

绑定:

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

因为 spark 会忽略它。

我也不能这样指定:

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

因为这样通过的每个 html 属性都会以 @ 符号为前缀。

所以我的问题是,如何在使用它初始化字典参数时将class HTML 属性传递给 spark 绑定,以便它不会引发编译器错误?

【问题讨论】:

    标签: asp.net-mvc spark-view-engine


    【解决方案1】:

    您的观察是正确的。我相信您的绑定中的正确语法类似于:

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

    而不是

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

    这样,您在视图中附加到标签上的任何未按名称特别处理的属性都将作为名称值对属性传递到呈现的输出中。

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

    一切顺利, 抢

    【讨论】:

    • 罗布,你是冠军!我不知道为什么我以前没有看到……我直接使用你博客上的示例。猜猜大脑有时会看到它想看到的东西。感谢您的帮助!
    • 不用担心 - 我们所有人都会发生,并且会再次发生;)
    【解决方案2】:

    很抱歉劫持了这个问题。但是对于任何从绑定开始的人,如果您使用的是稳定的 Spark 1.1.0,我认为有一些关于使用 # 和 child::* 的绑定的错误。解决方法是使用开发火花构建。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多