2013-05-22 36 views
4

我想htmlAttributes为object传递给像这样的方法......如何获得有效的HTML属性out对象htmlAttributes时属性为“数据 - *”

 foo.HtmlAttributes(new { data_bind = "foo"}); 

在所有MVC HtmlHelpers我已经使用下划线作为一个连字符,这将输出有效的HTML "data-bind"

在这到底是怎么回事按照以下几个问题罩:

How to get values out of object HtmlAttributes

Passing an object to HTML attributes

public virtual void HtmlAttributes(object htmlAttributes) 
    { 
     this.Attributes = new RouteValueDictionary(htmlAttributes); 
    } 

然后后者将其称为:

internal virtual void ApplyConfiguration(TagBuilder tag) 
    { 
      tag.MergeAttributes(this.Attributes); 
    } 

然而,这将输出:

<div data_bind="foo"></div> 

我能做些什么,以输出有效的HTML?

UPDATE 由于Zabavsky ...

public virtual void HtmlAttributes(object htmlAttributes) 
{  
     this.Attributes = HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAttributes); 
} 
+1

您可以使用[HtmlHelper.AnonymousObjectToHtmlAttributes方法](http://msdn.microsoft.com/en-us/library/system.web.mvc.htmlhelper.anonymousobjecttohtmlattributes(v = vs.108).aspx)。它用连字符代替下划线字符。 – Zabavsky

+0

谢谢,添加一个答案,我会接受。 – SimonGates

+0

很高兴我能帮到你。 – Zabavsky

回答