C# 中的 ASP.Net 标签更改
我通常处理 C# 代码,但最近开发了一个 ASP.NET 页面,我有一个出现的日历,用户可以选择他/她想要的日期。该页面上有一个 asp lbl,我想显示当前选定的日期,这通常对我来说很容易,但我在引用/查找控件时遇到了麻烦。我也不确定实现这一目标的最佳方法,并且我肯定将来会遇到这个问题。
这是我想设置 lbl 文本并尝试使用 FindControl 方法的地方,但它对我不起作用,认为它可能嵌套,因为我有一些 div?
public void Calendar1_SelectionChanged(object sender, System.EventArgs e)
{
Control Lbl = FindControl("inputField");
if (Lbl != null)
{
//Control mycontrol2 = Lbl.Parent;
Lbl.Text = Calendar1.SelectedDate.ToShortDateString();
}
这是在 asp 中。
<div id="date">
<input type="text" size="12" id="inputField" />
<script>
$("#inputField").click(function () {
$("#box").show("slow");
});
</script>
</div>
如何完成将输入字段文本设置为 Calendar.SelectedDate ? (以及您自己遇到的任何提示(如果有的话),以供良好实践)
感谢您的任何帮助。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您不使用 asp:Label 的原因是什么?您找不到“标签”,因为它是一个 html 控件,也称为客户端控件。使用 并且您在后面的代码中更改其文本应该没有问题:
Any reason why you're not using an asp:Label? You can't find the "label" because it is an html control, aka a client side control. Use an
<asp:Label id="lblCal" runat="server"...
and you should have no problem changing its text in code behind:Asp.Net 仅将服务器标记视为 C# 级别可用的控件。
所有这些 DIV 和其他标签对于 Asp.Net 来说只是纯文本,它们不会被考虑在控制层次结构中。
要使 Asp.Net 在服务器中考虑它,请将
runat="server"
属性放在您感兴趣的标签上。它们将可以在代码隐藏中通过id
属性中放置的名称进行访问。Asp.Net 将永远无法在示例代码中找到“inputField”。
解决方案:
为了解决您的问题,我建议您使用名为
TextBox
的 Asp.Net WebForm 控件...如果您想要的是输入
:通过这样做,您将能够通过名称访问代码隐藏中的
inputField
:Asp.Net considers only server tags as being controls available at C# level.
All those DIVs and other tags are just plain text for the Asp.Net, they will no be considered in the control hierachy.
To make Asp.Net consider it in the server, place the
runat="server"
attribute on the tags of your interest. They will become accessible in the code-behind by the name placed in theid
attribute.Asp.Net will never be abled to find the 'inputField' in your sample code.
Solution:
To solve your problem I recommend you use an Asp.Net WebForm control called
TextBox
... if what you want is aninput
:By doing this, you will be abled to access the
inputField
, in the code-behind by name: