проблемы с привязкой <% # в пользовательском контроле - PullRequest
1 голос
/ 12 декабря 2010

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

<some:MessageControl runat="server" X=<%# "asd" %> />

Мой код выглядит следующим образом:

public partial class MessageControl : System.Web.UI.UserControl
{
    String x = "";
    public String X 
    {
        get { return x; }
        set { x = value;}
    }    
}

Когда я вывожу значение x вэлемент управления,

x: <%= X %>

пуст.Если я передаю «asd» напрямую, как в

 <some:MessageControl runat="server" X="asd" />

X, получает правильное значение.

Что здесь происходит?Как я могу заставить это работать?Любые предложения приветствуются, Николас

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

<%@ Page Language="c#" Src="MyPage.aspx.cs" AutoEventWireup="true" Inherits="MyPage" %>
<%@ Register Src="MessageControl.ascx" TagName="MessageControl" TagPrefix="some" %>
<html>
  <body>
    <some:MessageControl runat="server" Visible=<%# SomeBoolMethodFromContaining Page%> />
  </body>
</html>

Ответы [ 2 ]

1 голос
/ 12 декабря 2010

Для выражения <% = SomeMethods или Property%> необходимо вызвать метод DataBind () на родительской странице или в элементе управления, который содержит это выражение для события OnPageLoad или другого.

Например, следующий код:

protected void Page_Load(object sender, EventArgs e)
{
DataBind();
}

protected string Hello
{
   get { return "hello";}
}

Здесь html часть страницы:

<asp:Literal runat="server" Id="Literal1" Text="<%= Hello  %>"/>

Для видимого свойства используйте приведенный выше код и выражение <% # Method or Property%>.Для текста используйте выражение <% =%>.Он выводит текст в виде простого текста.

Надеюсь, он поможет вам в вашем вопросе.

С уважением, Дима.

1 голос
/ 12 декабря 2010

Используйте это:

X='<%# "asd" %>'

Обратите внимание на одинарные кавычки.

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