Управление сервером ведет себя странно
У меня есть серверный элемент управления, который я написал, который в целом работает нормально. Однако, когда я добавляю в выделенную строку, это добавляет не один, а два <br />
элементы, что не то, что я после.
mounting=new DropDownLabel();
mounting.ID="mountTypeList";
mounting.Attributes.Add("class", "mounting");
mounting.Values=Configuration.MountTypes.GetConfiguration().Options;
mounting.Enabled=Utilities.UserType == UserType.Admin;
mounting.Value=value.Reference;
td1.Controls.Add(mounting);
**td1.Controls.Add(new HtmlGenericControl("br"));**
var span=new HtmlGenericControl("span");
span.Attributes.Add("class", "mountDescription");
span.ID="mountDescription";
td1.Controls.Add(span);
Есть мысли о том, что я делаю не так?
ETA:
Я разрешил ситуацию, добавив br с помощью jquery, который я в любом случае использую там. Но поведение, которое я видел, безусловно, неверно. Если я добавлю элемент, он должен добавить этот элемент, а не вдвое больше этого элемента.
1 ответ
HtmlGenericControl
сгенерирует с открывающим и закрывающим тегами <br>
а также </br>
вместо этого вы могли бы использовать new LiteralControl("<br/>")
который должен делать то, что вы хотите.
РЕДАКТИРОВАТЬ
Чтобы обойти это, вам понадобится ваша собственная реализация HtmlGenericControl
и расширить его для таких случаев, с которыми не связаны открывающие и закрывающие теги.
public class HtmlGenericSelfClosing : HtmlGenericControl
{
public HtmlGenericSelfClosing()
: base()
{
}
public HtmlGenericSelfClosing(string tag)
: base(tag)
{
}
protected override void Render(HtmlTextWriter writer)
{
writer.Write(HtmlTextWriter.TagLeftChar + this.TagName);
Attributes.Render(writer);
writer.Write(HtmlTextWriter.SelfClosingTagEnd);
}
public override ControlCollection Controls
{
get { throw new Exception("Self-closing tag cannot have child controls"); }
}
public override string InnerHtml
{
get { return String.Empty; }
set { throw new Exception("Self-closing tag cannot have inner content"); }
}
public override string InnerText
{
get { return String.Empty; }
set { throw new Exception("Self-closing tag cannot have inner content"); }
}
}