【问题标题】:how to get text attribute from a asp:panel如何从 asp:panel 中获取文本属性
【发布时间】:2011-05-24 16:30:02
【问题描述】:

可能是一个简单的问题,但我现在已经浏览了 30 分钟,但仍然找不到解决方案!

我有一个面板,它有一个属性 text="something"。但是面板类似乎没有 getAttribute 方法......我个人认为是愚蠢的!

代码如下:

foreach (Control c in clientGrid.Controls)
{
    if (c.GetType().ToString().Equals("System.Web.UI.WebControls.Panel"))
    {
        /*Something*/ textInsidePanel = ((Panel)c)./*Somthing*/              
    }
}

现在我尝试了AttributeCollection text = ((Panel)c).Attributes;

string text = ((Panel)c).Attributes.toString();

还有其他没用的东西……

这应该很简单!当我检查 chrome 上的元素时,我可以看到面板(以及 div)并且我可以在那里看到文本属性。我可以看到它的价值!但我希望我的 c# 代码具有价值!!

请帮忙!

亚历克斯

【问题讨论】:

  • 您是在脚本、c# 还是在 aspx 页面中设置属性?
  • 用户设置文本值。在回发时,我需要获取他们设置的值
  • 这是不可能的。属性值不会在回发时传输。如果你需要持久化一些东西,你可以使用隐藏的输入

标签: c# asp.net panel


【解决方案1】:

如果我回答正确 - 你可以使用下一个代码

asp部分

<asp:Panel runat="server" ID="pnl" Text="hello world"></asp:Panel>

c#部分 -

string s = pnl.Attributes["Text"];

【讨论】:

  • 你知道吗...我有时很迟钝
【解决方案2】:

您是否尝试过使用访问器?:

string val = YourPanel.Attributes["Text"];
//                                   ^ that's your attribute name

这应该得到属性的值但是我很确定你正在做的事情是不可能的,因为属性值不会在回发之间持久化(至少在通过客户端脚本设置时不会)。为此,您应该使用隐藏输入或其他一些表单元素。

【讨论】:

    【解决方案3】:

    Panel 控件本身没有文本属性。但是,如果您将内部文本作为 LiteralControl 访问,它将起作用:

    var panelContent = ((Panel)c).Controls[0] as LiteralControl;
    var text = panelContent.Text;
    

    【讨论】:

    • 感谢任何人的反对。不过,告诉我为什么我的答案是错误的会有所帮助。
    • 用户不是在寻找InnerText,而是在寻找&lt;div&gt; 元素的属性。这样做吗?
    • 所以我可能误解了这个问题。感谢您为我指明正确的方向。
    猜你喜欢
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多