值没有从ascx codebehind传递到javascript?

时间:2012-04-06 12:28:41

标签: c# asp.net user-controls smtp ascx

我使用它将值从ascx codebehind传输到具有3个标签的ascx用户控件

 string text1 = fr.data[0].name;
        string text2 = m.data[0].name;
        string text3 = m.data[0].name;
        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), " ", "document.getElementById('lblfriend').innerHTML ='" + text1 + "'; return true;", true);
        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), " ", "document.getElementById('lblmyname').innerHTML ='" + text2 + "'; return true;", true);
        Page.ClientScript.RegisterClientScriptBlock(this.GetType(), " ", "document.getElementById('lblmyname1').innerHTML ='" + text3 + "'; return true;", true);

但是值不会传递,我想将这些标签呈现为Html,以便它们可以嵌入电子邮件中

请帮忙!

3 个答案:

答案 0 :(得分:4)

查看已呈现的页面,您确定您的控件名为lblFriend,依此类推,我假设他们有更多的内容。

您可能需要使用

"document.getElementById('" + lblfriend.ClientID + "').innerHTML ='

答案 1 :(得分:1)

您可以在UserControl的代码隐藏中将标签文本公开为字符串属性。然后,当您渲染usercontrol时,将值传递给它,它将呈现标签的文本。

UserControl的Codebehind:

public partial class WebUserControl1 : System.Web.UI.UserControl
{
    private string _Friend;

    public string Friend
    {
        get
        {
            return _Friend;
        }
        set
        {
            _Friend = value;
            lblfriend.Text = value;
        }
    }

    private string _MyName;

    public string MyName
    {
        get
        {
            return _MyName;
        }
        set
        {
            _MyName = value;
            lblmyname.Text = value;
            lblmyname1.Text = value;
        }
    }

}

然后您可以在父控件/页面中加载您的值:

        string text1 = fr.data[0].name;
        string text2 = m.data[0].name;                    
        MyUserControl.Friend = text1;
        MyUserControl.MyName = text2;

答案 2 :(得分:0)

只使用控件的ClientID写入一个RegisterClientScript e.g。

String.Format(Page.ClientScript.RegisterClientScriptBlock(this.GetType(), " ", "document.getElementById('{0}').innerHTML ='" + text1 + "'; document.getElementById('{1}').innerHTML ='" + text2 + "';document.getElementById('{2}').innerHTML ='" + text3 + "'; return true;", true),lblfriend.ClientID,lblmyname.ClientID,lblmyname1.ClientID);

或者

String.Format(Page.ClientScript.RegisterClientScriptBlock(this.GetType(), " ", "{3}('{0}').{4} ='{5}'; {3}('{1}').{4}='{6}';{3}('{2}').{4}='{7}'; return true;", true),lblfriend.ClientID,lblmyname.ClientID,lblmyname1.ClientID,"document.getElementById","innerHTML",text1,text2,text3);