我需要从<script>
元素内对UserControl的用户定义属性进行读访问。当用户点击链接(我也不知道如何设置)时,需要运行此脚本。谢谢你的建议,所以!
代码隐藏:
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>
答案 0 :(得分:5)
您的用户控件正在托管您的Web应用程序的服务器上执行。 js正在客户端的机器浏览器中执行。 js无法与您的用户控件进行交互。
但是,您的用户控件会在执行时发出html标记。该html包含在js可以访问的页面dom中。因此,您可以将该属性的值作为该html的一部分发出(例如,作为标记中的js变量声明)。执行此操作的最佳位置是用户控件.ascx文件。
答案 1 :(得分:5)
作为Franci wrote,您需要在服务器上构建页面时将属性的值写入html输出。
这可能是您使用示例执行此操作的最简单方法:
<script type="text/javascript">
document.getElementById('imgFull').src = '<%= FullImageURL %>';
</script>
(<%= %>
构造只是Response.Write
的缩写。)
答案 2 :(得分:1)
运行页面时,查看html源代码(右键单击查看源代码)。您会看到那里没有<asp>
个标签。所有内容都转换为<html>
代码。
例如:
<asp:Panel>
在html中替换为<div>
。如果您想访问该面板,则只能使用Javascript访问div。
同样对其他用户控件也有效。检查html等价物。看看你能做些什么。或者向我们提供html输出。