找到回答自己,见下文......
我想要一个非常简单的用户控件...
<mw:Translate LocalizedText="Some text" />
这导致输出中出现“Some text”。
但是,如果我这样说:
<mw:Translate ID="translate1" LocalizedText="Some text" />Some other text</mw:Translate>
<mw:Translate ID="translate2"/>Some other text</mw:Translate>
ID = translate1会产生“Some text”,而ID = translate2则会显示“其他一些文字”
简单地说,如果未设置LocalizedText属性,则会呈现translate标记内的文本。如果既未设置LocalizedText,也未设置元素内的文本,则呈现空字符串。
为了澄清,首选LocalizedText属性。因此,如果设置了mw:Translate标签主体和LocalizedText,则会呈现本地化文本。
我正在写这个只是因为我不确定如何正确设置UserControl属性属性......
using System.Web.UI;
using System.ComponentModel;
using System;
namespace MagicWare.Web.UI.WebControls
{
[PersistChildren(false)]
[ParseChildren(true, "InsideText")]
public class Translate : System.Web.UI.WebControls.Literal
{
public string LocalizedText
{
get { return Text; }
set { this.Text = Translations.Translate(Value); }
}
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
public string InsideText { get; set; }
protected override void Render(HtmlTextWriter writer)
{
if (!String.IsNullOrEmpty(Text))
{
writer.Write(Text);
return;
}
if (!String.IsNullOrWhiteSpace(InsideText))
{
writer.Write(InsideText);
return;
}
writer.Write("");
}
}
}
ANSWER
我需要知道的是接口 ITextControl 的存在。有了它,我只实现了一个“Text”属性,它包含放在标签内的文本,因此它就像文字控件一样。
答案 0 :(得分:0)
我需要知道的是ITextControl接口的存在。有了它,我只是实现了一个&#34; Text&#34; attribute,包含放在标记内的文本,因此它的工作方式与文字控件相同。