Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以以声明方式设置文本框文本?_C#_Asp.net_Webforms - Fatal编程技术网

C# 是否可以以声明方式设置文本框文本?

C# 是否可以以声明方式设置文本框文本?,c#,asp.net,webforms,C#,Asp.net,Webforms,我试图以声明方式将TextBox控件的Text属性设置为变量的值我发现设置text属性的唯一方法是将其放在代码隐藏页面中,这是我试图避免的。 我尝试过做以下所有事情,但没有成功: <asp:TextBox ID="myTxt" runat="server" Text='<%# MyNamespace.MyClass.StaticString %>' /> <asp:TextBox ID="myTxt" runat="server" Text='<%= MyNa

我试图以声明方式将TextBox控件的Text属性设置为变量的值我发现设置text属性的唯一方法是将其放在代码隐藏页面中,这是我试图避免的。

我尝试过做以下所有事情,但没有成功:

<asp:TextBox ID="myTxt" runat="server" Text='<%# MyNamespace.MyClass.StaticString %>' />
<asp:TextBox ID="myTxt" runat="server" Text='<%= MyNamespace.MyClass.StaticString %>' />
<asp:TextBox ID="myTxt" runat="server" Text='<% Response.Write(MyNamespace.MyClass.StaticString); %>' />
<asp:TextBox ID="myTxt" runat="server" /><% myTxt.Text = MyNamespace.MyClass.StaticString; %>


这可能吗?如果可能的话,怎么可能?

首先,为每个文本框指定自己的ID。该ID在页面上的所有元素中都应该是唯一的

然后在代码隐藏中(首先尝试页面的加载事件),您将希望放置如下内容:

myTxt.Text = MyNamespace.MyClass.StaticString
编辑: 你试过这个了吗

<asp:TextBox ID="myTxt" runat="server"><% CodeBehind.FunctionOrProperty %></asp:TextBox>

尝试以下操作

<asp:TextBox ID="myTxt" runat="server"></asp:TextBox> <% myTxt.Text= " Whatever you want"  %>

这是最好的方法

<asp:TextBox ID="myTxt" runat="server" Text='<%# MyNamespace.MyClass.StaticString %>' />

您说过您已经尝试过了,但诀窍是您必须在页面本身上调用DataBind()。是一个数据绑定表达式,调用DataBind()时将填充该值


您可以在文本框本身上调用DataBind,但最好在页面上调用以获取所有内容(递归工作)。您希望保持一致,只在页面上调用它,因为在控件上多次调用DataBind()可能会产生负面影响(列表中的数据重复等)。

如果您注意到在我的所有示例中,文本框都有ID。此外,我还特别试图避免在代码隐藏中设置此值。ID必须是唯一的,而不是在每个文本框中重复相同的值。第二件事就是将分配卸载到代码隐藏中。我上面给出的示例是单独尝试的(在每次后续尝试之前,一个文本框被更改为每行的样子),而不是同时尝试的。为什么要尝试避免在代码中指定值?在ASP.NET中,你应该尽可能多地将代码放在代码后面,并且不要让这些东西出现在你的标记中。这是一个实验。出于各种原因,我对MVC感兴趣。然而,MVC不允许我声明性地使用很多控件,特别是AJAX控件工具包控件(使用JavaScript代码创建控件不是声明性的)。所以我正在尝试在WebForms中使用一些MVC原则。奇怪的是,这不起作用?!我已经试过了,如原始问题所示。将Page.DataBind()添加到PageLoad事件使绑定表达式在.aspx页面中工作。如果允许我以声明方式设置控件值,我可以将Page.DataBind()添加到代码后面。我只是试图避免在代码中设置单个值。