所以,我正在尝试动态地向网站添加一个按钮,让用户知道他们要添加到表单中的内容。但是,当它呈现一个新按钮时,它会一直提供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语句中看到生成按钮我试图尽早删除值键)
答案 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";