我有ASP.NET用户控件,并希望将格式化的字符串作为参数传递:
<UI:SomeControl runat="server"
Visible="<%# IsControlVisible %>"
Caption="Caption string"
OnClick=<%# string.Format("someFunction({0}, {1}", 1, 2) %>
/>
以下是 SomeControl.aspx.cs 的代码:
public partial class SomeControl: UserControl
{
public string Caption { get; set; }
public string Hint { get; set; }
public string OnClick { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
DataBind();
}
}
当只传递一些字段(<%# SomeField1 #>
)或常量字符串(如示例中的Caption)时,一切正常。但是当我想从几个字段的值中创建字符串时(例如在我的示例中),没有添加任何内容:OnClick
为空。
我应该如何正确地将计算字符串传递给用户控件?
答案 0 :(得分:1)
如果您在用户控件中放置公共属性,则可以从父级设置是否为
在UC上
public string myVariable { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
LabelOnUserControl.Text = myVariable;
}
然后在父页面上,您可以通过设置公共属性来设置该值。
SomeControl.myVariable = "ValueFromParent";
答案 1 :(得分:1)
当用户点击您的自定义用户控件时,您似乎试图触发一些JavaScript(someFunction(1, 2)
),并且传递给JavaScript的参数应该由在服务器...
您可以尝试以下操作(首先为您的用户控件提供可在您的代码中引用的唯一ID);
void Page_Load(object sender, EventArgs e)
{
var a = 1;
var b = 2;
myControl.Attributes.Add("onclick", string.Format("someJsFunctionName({0},{1});", a, b);
}
一旦Page_Load
和Page_Init
值建立,就可以将其放在a
或b
内或page life cycle的任何其他部分。