코드 숨김 없이 메서드의 출력을 텍스트 상자 값에 할당하는 방법
문제
코드 숨김 없이 메서드의 출력을 텍스트 상자 값에 어떻게 할당합니까?
<%@ 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>
컴파일 오류가 발생합니다.
해결책
.ASPX 파일에는 몇 가지 다른 표현식 유형이 있습니다.다음이 있습니다:
<%= TextFromMethod %>
이는 단순히 리터럴 컨트롤을 예약하고 렌더링 시 텍스트를 출력합니다.
그리고 다음이 있습니다:
<%# TextFromMethod %>
이는 컨트롤이 DataBound()일 때 평가되는 데이터 바인딩 표현식입니다.다음과 같은 표현식 빌더도 있습니다.
<%$ ConnectionStrings:Database %>
하지만 여기서는 그게 별로 중요하지 않습니다....
그래서 <%= %>
메소드는 .Text 속성에 리터럴을 삽입하려고 시도하기 때문에 작동하지 않습니다. 분명히 원하는 것은 아닙니다.
그만큼 <%# %>
TextBox가 DataBound가 아니거나 그 부모가 아니기 때문에 메서드가 작동하지 않습니다.TextBox가 Repeater 또는 GridView에 있는 경우 이 방법이 작동합니다.
그래서 뭐 할까?그냥 전화해 TextBox.DataBind()
어느 시점에서.또는 컨트롤이 2개 이상인 경우 전화하세요. Page.DataBind()
당신의 Page_Load
.
Private Function Page_Load(sender as Object, e as EventArgs)
If Not IsPostback Then
Me.DataBind()
End If
End Function
다른 팁
서버 컨트롤 대신 HTML 컨트롤을 사용해 보셨나요?컴파일 오류도 발생합니까?
<input type="text" id="TextBox4" runat="server" value="<%=TextFromString%>" />
제휴하지 않습니다 StackOverflow