在asp中访问标签的文本字段

时间:2016-02-01 08:04:49

标签: c# asp.net

我的网页上有一个asp转发器。我正在制作论坛网站的基础设施,我的问题是,转发器使用ItemDataBound方法从数据库中获取问题的答案。如果附加了文件,则可以看到下载按钮和文件名标签。我在ItemDataBound方法中进行检查。但是当我点击下载按钮时,我想在标签上获取文件名,该文件名属于与该下载按钮相同的转发器。 this.label.text没有帮助

感谢您的回答。

这是我检查的ItemDataBound方法的一部分。我想在完全相同的转发器上看到CevapEk标签的内容,以便我可以生成下载链接。

string s = DataBinder.Eval(e.Item.DataItem, "dosya").ToString();

if (s != "")
{
    CevapEk = (Label)e.Item.FindControl("CevapEk");
    if (CevapEk != null)
    {
        CevapEk.Text = DataBinder.Eval(e.Item.DataItem, "dosya").ToString();
        CevapEk.Visible = true;

    }
    Button CevapEkIndir = (Button)e.Item.FindControl("CevapEkIndir");
    if (CevapEk != null)
    {
        CevapEkIndir.Text = "Indir";
        CevapEkIndir.Visible = true;
    }
    HiddenField hdn = (HiddenField)e.Item.FindControl("hdnCevapEk");
}

这是下载事件方法。我需要在开头的文件名(字符串dosya)

protected void CevapEkIndir_Click(object sender, EventArgs e)
{
    if (this.CevapEk != null)
    {
        string dosya = this.CevapEk.Text;

        string dosya_path = @"\uploadCevap\";

        dosya_path = dosya_path + dosya;
        Response.Clear();

        Response.AppendHeader("Content-Disposition", "attachment; filename=" + dosya);
        Response.TransmitFile(Server.MapPath(dosya_path));
        Response.End();
    }
}

1 个答案:

答案 0 :(得分:1)

试试这个:

protected void CevapEkIndir_Click(object sender, EventArgs e)
{
    Button CevapEkIndir = ((Button)sender);
    Control container = CevapEkIndir.NamingContainer;
    Label CevapEk = (Label)container.FindControl("CevapEk");

    if (CevapEk != null)
    {
        string dosya = CevapEk.Text;

        string dosya_path = @"\uploadCevap\";

        dosya_path = dosya_path + dosya;
        Response.Clear();

        Response.AppendHeader("Content-Disposition", "attachment; filename=" + dosya);
        Response.TransmitFile(Server.MapPath(dosya_path));
        Response.End();
    }
}