将计算字符串绑定到ASP.NET Web窗体中的用户控件

时间:2018-02-13 15:39:14

标签: asp.net webforms

我有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为空。

我应该如何正确地将计算字符串传递给用户控件?

2 个答案:

答案 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_LoadPage_Init值建立,就可以将其放在ab内或page life cycle的任何其他部分。