Заполните TextBox из публичной собственности из кода сзади - PullRequest
0 голосов
/ 13 июля 2010

Я пытаюсь использовать свойство из выделенного кода для заполнения текстового поля вместо использования в выделенном фрагменте текста textbox.text =.Я использую vb.net.Вот код для страницы aspx:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContentPlaceHolder" runat="server">
    <asp:TextBox runat="server" ID="roleTextBox" Text='<%# CurrentRole.Name%>'></asp:TextBox>
</asp:Content>

Вот код для кода:

Imports Compass.UI.components
Imports Compass.Core.Domain
Imports Compass.Core.Domain.Model

Namespace app.administration.Roles
    Partial Public Class edit
        Inherits ClaimUnlockPage

        Private _roleRepository As IRoleRepository
        Private _roleId As Integer
        Private _role As Role

        Public Property CurrentRole() As Role
            Get
                Return _role
            End Get
            Set(ByVal value As Role)
                _role = value
            End Set
        End Property

        Public Property RoleRepository() As IRoleRepository
            Get
                Return _roleRepository
            End Get
            Set(ByVal value As IRoleRepository)
                _roleRepository = value
            End Set
        End Property

        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

            LoadRole()

        End Sub

        Private Sub LoadRole()
            _roleId = Config.RequestVal("id", Request) 
            _role = _roleRepository.GetById(_roleId)
        End Sub
    End Class
End Namespace

Когда я запускаю страницу, текстовое поле пусто.

Ответы [ 3 ]

0 голосов
/ 13 июля 2010

Насколько я знаю, вы не можете связать свойство элемента управления, подобного этому (хотелось бы, чтобы вы могли, но я никогда не мог выяснить или найти пример, как это сделать).Я всегда делал это, создавая защищенную функцию для возврата, например:

Protected Function GetCurrentRoleName() As String
    Return CurrentRole.Name
End Function

И в вашей разметке привязка выглядит так:

Text='<%# GetCurrentRoleName() %>'
0 голосов
/ 13 июля 2010

Вы должны DataBind контейнер-элемент управления, который содержит ваше Textbox (например, GridView, UserControl и т. Д.).Так что, по крайней мере, ваша aspx-страница должна быть привязана к данным.«При вызове на серверном элементе управления этот метод разрешает все выражения привязки данных в элементе управления сервера и в любом из его дочерних элементов управления

   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Me.CurrentRole = New Role("Administrator")
        Me.DataBind() '!!!!!!!
    End Sub

    Private _currentRole As Role

    Protected Property CurrentRole() As Role
        Get
            Return _currentRole
        End Get
        Set(ByVal value As Role)
            _currentRole = value
        End Set
    End Property

  Public Class Role
    Public Sub New(ByVal name As String)
        Me.Name = name
    End Sub
    Public Name As String
  End Class

Затем вы можете использовать aspx-код для установки свойства TextBox'-text.

0 голосов
/ 13 июля 2010

Я не видел roleTextBox.text=value в вашем коде!в LoadRole или в любом месте.
И если вы пытаетесь связать его, вам необходим статический класс для роли.

Просто для тестирования попробуйте добавить следующую строку в LoadRole

    Private Sub LoadRole()
      _roleId = Config.RequestVal("id", Request) 
      _role = _roleRepository.GetById(_roleId)
      roleTextBox.text =CrrentRole.Name;
    End Sub 

если roleTextBox еще пуст, то CurrentRole.Name пусто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...