LinkBut​​ton OnClick不与数据目标和数据切换一起运行

时间:2016-07-04 20:58:17

标签: javascript c# html asp.net

在我的asp.net应用程序中(使用C#)我有以下链接按钮:

<asp:LinkButton ID="btnSelectPhoto" runat="server" Width="120" style="display:inline-block; margin:5px;"
    CausesValidation="false" 
    CommandArgument='<%# Eval("Id") + "," + Eval("Name") + "," + Eval("Description") + "," + Eval("Path") + "," +  Eval("DateCreated") %>'
    OnClick="btnSelectPhoto_Click"
    data-toggle="modal" data-target="#album-photo" > 

    ...

</asp:LinkButton>

目前,当data-toggledata-target属性存在时,它似乎不会触发OnClick事件(断点永远不会发生)。

当我删除data-toggledata-target属性时,事件会完全触发,但我需要存在数据切换和数据目标。有没有办法让我在data-toggle事件结束时在代码中调用data-targetOnClick功能?或者也许是我问题的其他一些解决方案?

2 个答案:

答案 0 :(得分:0)

您可以绑定在页面的OnInit方法中添加属性,使用指定的属性呈现它们,并且如果需要,后端也会知道它们。

示例:

  protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        btnSelectPhoto.Attributes.Add("data-toggle", "modal");
        btnSelectPhoto.Attributes.Add("data-target", "#album");
    }

编辑:正如你所说,这是在ListView上面,上面的解决方案也可以工作,它有点hacky但你可以这样做

    protected void Page_Load(object sender, EventArgs e)
    {

        this.ListView1.DataSource = new[] { 1, 2, 3, 4, 5 };
        this.ListView1.DataBind();
    }

    protected void Button1_Init(object sender, EventArgs e)
    {
        var dataList = ListView1.DataSource as IEnumerable<int>;
        var senderButton = (sender as Button);
        var data = (senderButton.NamingContainer as ListViewItem).DataItem;
        senderButton.Attributes.Add("data-x", data.ToString());
    }

数据是绑定到此模板按钮的ListView的数据。

答案 1 :(得分:0)

我找到了解决方案。我在OnClick事件结束时添加了以下代码行,现在一切正常。

ClientScript.RegisterStartupScript(GetType(), "Show", "<script> $('#album-photo').modal('toggle');</script>");