我一直在使用Bindings Spark View 引擎的功能取代了我的很多 Html 帮助器方法调用。
我遇到的一个问题是我想定义一个 css 类来传递给辅助方法的匿名字典参数,我通常会这样做:
${Html.EditorFor(x=>x.Username, new{@class = "css-class"})}
用 Spark 绑定(bind)替换它看起来像这样:
绑定(bind):
<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 属性都会以 @ 符号为前缀。
所以我的问题是,在使用 Spark 绑定(bind)初始化字典参数时,如何将 class
HTML 属性传递给 Spark 绑定(bind),以免引发编译器错误?
最佳答案
您的观察是正确的。我相信您的绑定(bind)中的正确语法如下:
<element name="Editor">Html.EditorFor(x => x.@For, new Dictionary[[string,object]]{{"@*"}}) </element>
而不是
<element name="Editor">Html.EditorFor(x => x.@For, new {"@*"}) </element>
这样,您在 View 中附加到标记的任何未按名称专门处理的属性都将作为名称值对属性传递到渲染的输出上。
我希望我的语法正确,这对你有用吗?
祝一切顺利, 罗布
关于asp.net-mvc - Spark View 引擎与类 Html 属性的绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4154999/