在asp.net中创建webcontrols的通用方法

时间:2013-09-06 11:06:51

标签: asp.net-mvc c#-4.0

我想创建一个创建各种控件的通用方法:

例如:

Literal l = CreateControl<Literal>("emails", "ltl", name.Name );
Panel p =   CreateControl<Panel>("emails","pnl", name.Name);

我写的方法如下:

private T CreateControl<T>(string s1, string s2, string s3 )
    where T : Control 
{
    T control = default(T);

    control.ID = s1 + s2 + s3;

    return T;
}

这给了我很多错误 1)返回T - T是一个类型参数,但用作变量

此外,在CreateControl方法中,我没有很多属性可以设置为控件,如Text,CssClass等。

有人可以告诉我如何实现这个目标?

1 个答案:

答案 0 :(得分:0)

第一个问题:

private T CreateControl<T>(string s1, string s2, string s3 )
    where T : Control 
{
    T control = default(T);

    control.ID = s1 + s2 + s3;

    return control;
}

关于你的第二个,我建议你创建一个类来保存你想要设置的参数,然后将该类传递给这个方法。


您的第二个问题尚未真正定义,您的参数命名会留下一些需要的东西,但是类似于:

public class ControlOptions
{
   public string IDSuffix { get; set; }

   public string ID { get; set; }

   public string IDPrefex { get; set; }

   public string CSSClass { get; set; }

   ... etc ...
}

...

private T CreateControl<T> (ControlOptions options) ...

...

var label = CreateControl<Label>(new ControlOptions () {
    ID = "Test",
    CssClass = "Something"
});