1

所以,我试图动态地向网站添加一个按钮,让用户了解他们正在向表单添加什么。但是,当它呈现一个新按钮时,它一直将 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 语句中看到我尝试过早删除 value 键)

4

3 回答 3

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;

于 2009-11-05T20:10:43.723 回答
1

尝试改用HtmlInputButton

于 2009-11-05T20:15:13.550 回答
0

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

myControl = new Button();
((Button)myControl).Text = "submit";
于 2009-11-05T20:22:20.970 回答