我正在尝试将C#中声明的变量传递给html。这些变量都已在后面的代码中声明为公共。
这是我正在使用的HTML代码:
<asp:TextBox ID="TextBoxChildID" Text='<%= Child_ID %>' runat="server" Enabled="false"></asp:TextBox>
问题是,当页面加载时,文本框中显示的是文本,而不是变量中的值。
请问怎么了?
所有这些都假定这只是页面上某个文本框,而不是DataBound控件中的文本框。如果文本框是转发器中itemTemplate的一部分,并且Child_ID随数据行的不同而不同,则所有这些都不正确。
改为执行此操作:
<asp:TextBox ID="TextBoxChildID" runat="server" Enabled="false"><%= Child_ID %></asp:TextBox>
简而言之,您犯了与我问这个问题时相同的错误:Why <%= %> works in one situation but not in another
或者,在后面的代码中,您可以在ASPX中使用它:
<asp:TextBox ID="TextBoxChildID" runat="server" Enabled="false"></asp:TextBox>
以及此代码在您的代码背后:
TextBoxChildID.Text = Child_ID;
该变量必须是公共的。和:
'<%# Child_ID %>'
<script type="text/javascript">
function abc()
{
var id = document.getElementById('txtTextBox');
id.value=<%=MyProperty %>;
alert(id.value);
}
</script>
protected int MyProperty
{
get
{
return 1;
}
}
Page.RegisterStartupScript(Guid.NewGuid().ToString(),
"<script language = 'javascript'>abc();</script>");
在HTML中:
<asp:HiddenField ID="HiddenField1" runat="server" />
在后面的代码中:
protected void Page_Load(object sender, EventArgs e)
{
HiddenField1.Value = Child_ID;
}
这将是最好的方法,它将使用该值创建一个隐藏的输入。