코드 숨김 없이 메서드의 출력을 텍스트 상자 값에 할당하는 방법

StackOverflow https://stackoverflow.com/questions/36028

  •  09-06-2019
  •  | 
  •  

문제

코드 숨김 없이 메서드의 출력을 텍스트 상자 값에 어떻게 할당합니까?

<%@ 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%>" />
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top