【问题标题】:ASP.NET User Control with attribute priority behavior具有属性优先级行为的 ASP.NET 用户控件
【发布时间】: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


【解决方案1】:

我需要知道的只是接口 ITextControl 的存在。有了它,我只需实现一个“文本”属性,它包含放置在标签内的文本,因此它就像文字控件一样工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多