【发布时间】:2012-06-29 14:53:23
【问题描述】:
自己找到了答案,见下文...
我想要一个非常简单的用户控件...
<mw:Translate LocalizedText="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 生成“一些文本”,而 ID=translate2 呈现“一些其他文本”
简单地说,如果未设置 LocalizedText 属性,则呈现 translate 标记内的文本。如果既没有设置 LocalizedText,也没有设置元素内的文本,则呈现空字符串。
为了清楚起见,首选 LocalizedText 属性。因此,如果设置了 mw:Translate 标签正文和 LocalizedText,则会呈现 Localized Text。
我写这个只是因为我不确定如何正确设置 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("");
}
}
}
回答
我需要知道的只是界面 ITextControl 的存在。有了它,我只需实现一个“文本”属性,它包含放置在标签内的文本,因此它就像文字控件一样工作。
【问题讨论】:
-
当你拥有两者时,你希望它如何呈现?
-
LocalizedText 属性是首选。因此,如果设置了 mw:Translate 标签正文和 LocalizedText,则会呈现 Localized Text。
-
你的问题到底是什么?
标签: c# asp.net user-controls attributes