ASP.NET: как получить доступ к свойству UserControl из JScript? - PullRequest
2 голосов
/ 10 октября 2009

Мне нужен доступ на чтение к пользовательскому свойству моего UserControl из элемента <script>. Этот скрипт должен запускаться, когда пользователь нажимает на ссылку (которую я также не знаю, как настроить). Спасибо за ваш совет, ТАК!

Код-за:

public partial class TNLink : System.Web.UI.UserControl
{
    [System.ComponentModel.BindableAttribute(true)]
    public virtual string TNImageURL { get; set; }

    [System.ComponentModel.BindableAttribute(true)]
    public virtual string FullImageURL { get; set; }

    [System.ComponentModel.BindableAttribute(true)]
    public virtual string Caption { get; set; }
}

ASP:

<script type="text/javascript">
    //****How do I access the FullImageURL property for this line?****
    document.getElementById('imgFull').src = FullImageURL;
</script>
<div style="text-align: center">
    <a>
        <asp:Image ID="imgTN" runat="server"
            ImageUrl='<%# DataBinder.Eval (Page, "TNImageURL") %>'
            style="border: 5px solid #000000; width: 85%;" /><br />
        <asp:Label ID="lblCaption" runat="server"
            Text='<%# DataBinder.Eval (Page, "Caption") %>' />
    </a>
</div>

Ответы [ 3 ]

5 голосов
/ 10 октября 2009

Как писал Фрэнси , вам нужно записать значение свойства в вывод html при создании страницы на сервере.

Это, вероятно, самый простой способ сделать это на вашем примере:

<script type="text/javascript">
    document.getElementById('imgFull').src = '<%= FullImageURL %>';
</script>

(Конструкция <%= %> просто коротка для Response.Write.)

5 голосов
/ 10 октября 2009

Ваш пользовательский элемент управления выполняется на сервере, на котором размещено ваше веб-приложение. Js выполняется в браузере компьютера клиента. У js нет возможности взаимодействовать с вашим пользовательским элементом управления.

Однако ваш пользовательский элемент управления генерирует HTML-разметку как часть своего выполнения. Этот html включен в страницу, к которой у js есть доступ. Таким образом, вы можете передать значение свойства как часть этого html (например, как объявление переменной js в теге). Лучшее место для этого - файл пользовательского контроля .ascx.

1 голос
/ 10 октября 2009

Когда вы запустите страницу, просмотрите исходный HTML-код (щелкните правой кнопкой мыши источник просмотра).Вы увидите, что там нет тегов <asp>.Все преобразуются в теги <html>.

Например, например:

<asp:Panel> заменяется на <div> в html.А если вы хотите получить доступ к панели, вы можете получить доступ только к div с помощью Javascript.

То же самое относится и к другим пользовательским элементам управления.Проверьте HTML-эквивалент.И посмотри, что ты можешь.Или предоставьте нам вывод html.

...