Как назначить вывод метода в значение текстового поля без кода позади - PullRequest
1 голос
/ 30 августа 2008

Как назначить вывод метода для значения текстового поля без кода позади?

<%@ 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>

вызывает ошибку компиляции.

Ответы [ 2 ]

2 голосов
/ 30 августа 2008

В файлах .ASPX есть несколько разных типов выражений. Там же:

<%= TextFromMethod %>

, который просто резервирует буквенный элемент управления и выводит текст во время рендеринга.

а затем есть:

<%# TextFromMethod %>

, которое является выражением привязки данных, вычисляется, когда элементом управления является DataBound (). Есть также конструкторы выражений, такие как:

<%$ ConnectionStrings:Database %>

но это не очень важно здесь ...

Таким образом, метод <%= %> не будет работать, потому что он попытается вставить литерал в свойство .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 голос
/ 30 августа 2008

Вы пытались использовать элемент управления HTML вместо элемента управления сервера? Это также вызывает ошибку компиляции?

<input type="text" id="TextBox4" runat="server" value="<%=TextFromString%>" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...