如何在没有代码的情况下将方法的输出分配给文本框值?
<%@ Page Language="VB" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Public TextFromString As String = "test text test text"
Public TextFromMethod As String = RepeatChar("S", 50) 'SubSonic.Sugar.Web.GenerateLoremIpsum(400, "w")
Public Function RepeatChar(ByVal Input As String, ByVal Count As Integer)
Return New String(Input, Count)
End Function
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Test Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%=TextFromString%>
<br />
<asp:TextBox ID="TextBox1" runat="server" Text="<%# TextFromString %>"></asp:TextBox>
<br />
<%=TextFromMethod%>
<br />
<asp:TextBox ID="TextBox2" runat="server" Text="<%# TextFromMethod %>"></asp:TextBox>
</div>
</form>
</body>
</html>
这主要是因为设计师们可以在aspx页面中使用它。将变量值推送到文本框中似乎很简单。
这也让我感到困惑
<asp:Label runat="server" ID="label1"><%=TextFromString%></asp:Label>
和
<asp:TextBox ID="TextBox3" runat="server">Hello</asp:TextBox>
有效但
<asp:TextBox ID="TextBox4" runat="server"><%=TextFromString%></asp:TextBox>
导致编译错误。
答案 0 :(得分:2)
.ASPX文件中有几种不同的表达类型。有:
<%= TextFromMethod %>
只保留文字控件,并在渲染时输出文本。
然后是:
<%# TextFromMethod %>
这是一个数据绑定表达式,在控件是DataBound()时进行计算。还有表达式构建器,如:
<%$ ConnectionStrings:Database %>
但这在这里并不重要......
因此,<%= %>
方法不起作用,因为它会尝试将Literal插入.Text属性......显然,不是你想要的。
<%# %>
方法不起作用,因为TextBox不是DataBound,也不是任何父类。如果您的TextBox位于Repeater或GridView中,则此方法可以正常工作。
那么 - 该怎么办?只需在某个时候致电TextBox.DataBind()
。或者,如果您有多个控件,只需在Page.DataBind()
中调用Page_Load
。
Private Function Page_Load(sender as Object, e as EventArgs)
If Not IsPostback Then
Me.DataBind()
End If
End Function
答案 1 :(得分:1)
您是否尝试过使用HTML控件而不是服务器控件?它是否也会导致编译错误?
<input type="text" id="TextBox4" runat="server" value="<%=TextFromString%>" />