c#中的自定义属性,用于在html中提供自定义数据属性

时间:2015-04-29 13:36:47

标签: c# html asp.net-mvc model-view-controller data-annotations

我希望能够在c#中为我的模型中的对象创建数据属性。显示时。我希望html在html本身的数据属性中呈现值。

在我看来,代码与此类似。

public class AffectsAttribute:Attribute
{
    public string[] Departments { get; set; }

}


[EmailAddress]
[Required(ErrorMessage = "Email is required")]
[Affects(Departments = new string[]{"Coaches"})]
public string Email {get; set;}

然后在html中,用razor调用之后会看起来像这样

@Html.EditorFor(model => model.Email)


<input class="text-box single-line" data-affects="Coaches" data-val="true" data-val-email="The Email field is not a valid e-mail address." data-val-required="Email is required" id="Email" name="Email" type="email"  value="">

我不知道如何指定我希望在页面上呈现项目时添加其他数据属性。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

您必须创建一个新的HTML帮助程序才能执行此操作。 http://www.asp.net/mvc/overview/older-versions-1/views/creating-custom-html-helpers-cs

它是HtmlHelper的扩展,它创造了这一点。 类似的东西:

  public static class YourExtensions
 {
      public static string YourMethodName(this HtmlHelper helper, string[] paramName)
      {
           return  String.Format("<input data-affects='{0}'>",String.Join(" ", paramName));
      }
 }