ASP.NET - 动态添加按钮包含额外的值属性

时间:2009-11-05 20:04:19

标签: c# asp.net dynamic attributes web-controls

所以,我正在尝试动态地向网站添加一个按钮,让用户知道他们要添加到表单中的内容。但是,当它呈现一个新按钮时,它会一直提供value属性为“”并忽略我添加的属性。我试图解决这个问题无济于事,包括在添加我的版本并清除所有属性之前删除value属性。

WebControl myControl = null;
string[] elementInfo = elementCode.Split(new char[] { ';' });
        switch (elementID)
        {
            case 1:
                myControl = new Button();
                myControl.Attributes.Remove("value");
                myControl.Attributes.Add("type","submit");
                break;
            case 2:
                myControl = new TextBox();
                myControl.Attributes.Clear();
                myControl.Attributes.Add("type", "text");
                break;
            case 3:
                myControl = new CheckBox();
                myControl.Attributes.Clear();
                myControl.Attributes.Add("type", "checkbox");
                break;
        }
        if (myControl != null)
        {
            string[] properties;
            if (elementCode.Length > 0)
            {
                foreach (string attr in elementInfo)
                {
                    properties = attr.Split(new char[] { '=' });

                    myControl.Attributes.Add(properties[0], properties[1]);
                }
            }
            return myControl;
        }
        else
            return null;

我知道循环正在触发,第2行返回的值是一行,“value = submit”。事实上,标记出现了:

<div id="divLastElement">
    <input type="submit" name="ctl03" value="" type="submit" value="Submit Me!" />
</div>

我确定这是导致它为空的第一个[value =''],但是如何覆盖此行为? (你可以在switch语句中看到生成按钮我试图尽早删除值键)

3 个答案:

答案 0 :(得分:2)

最终使用ASP.NET Button控件,HTML值来自ASP.NET Button上的Text属性。我猜测如果没有设置,它只是渲染另一个值属性。

尝试将Button上的.Text属性设置为“提交我!”而不是通过Attributes集合设置其值。

部分代码段如下所示:

case 1:
   myControl = new Button();
   ((Button)myControl).Text="Submit me!";
   myControl.Attributes.Add("type","submit");
   break;

答案 1 :(得分:1)

请尝试使用HtmlInputButton

答案 2 :(得分:0)

你需要使用Text属性。正如您在评论中所说,您没有在Intellisense中看到“Text”属性。这是因为对于Intellisense,myControl是一个WebControl(你碰巧做了一个Button)。 WebControl是您创建的特定控件的基类,但它本身没有“Text”属性。请改用以下内容:

myControl = new Button();
((Button)myControl).Text = "submit";