【问题标题】:ASP.NET javascript postback and catch event in c#ASP.NET javascript 回发并在 c# 中捕获事件
【发布时间】:2013-10-08 17:25:19
【问题描述】:

目前正在开发一个 Web 应用程序。需要一些关于如何在 asp.net/javascript 中声明事件的一般信息,以及这些事件如何适合后面的代码(在本例中为 c#)。

我自己的情况如下: 我有一个 AccountsTreeView,需要用信息更新第二个 TreeView,具体取决于在 AccountsTreeView 中检查了哪些节点。由于 TreeNodeCheckChanged 事件不发布回调,因此(简单)解决方案是实现一个简单的脚本来提供回发。 我只是不确定如何在我的代码中捕获回发/事件。

我找到的 javascript 代码,我将其嵌入到我的 .aspx 文件中: http://forums.asp.net/p/1109288/1888180.aspx

<script language="javascript" type="text/javascript">

function postBackByObject()
    {
        var o = window.event.srcElement;
        if (o.tagName == "INPUT" && o.type == "checkbox")
        {
            __doPostBack("","");
        } 
    }
</script>

我希望的结果是这样的:

protected void TreeView_onCheckBoxChanged(Object sender, someEvent? e)
{
    e.SelectedNode.Text = "able to access the selected node.";
}

任何帮助将不胜感激!请原谅我帖子中的任何不当行为,毕竟这是我的第一个。

【问题讨论】:

标签: c# javascript asp.net treeview postback


【解决方案1】:

您可以通过输入 HTML onclick='postBackByObject(this)' 或类似内容来绑定到 javascript 事件。 Here 是一个 DOM 事件列表(在代码中使用“属性”列下的词)。

有很多方法可以将数据从 javascript 传递到 C# 方法,但这里有一个如何使用 jQuery 的简单示例(如果您不知道,请告诉我)。我更喜欢使用 on() 方法进行绑定,而不是将其硬编码到 HTML 中。

<script language="javascript" type="text/javascript">

$("#checkbox-id").on('click','postBackByObject');

function postBackByObject()
    {
        $.ajax({
            url: ControllerName/TreeView_onCheckBoxChanged,
            type: "POST",
            data:{sender:window.event.srcElement}
        });
    }
</script>

on() 的好处是您可以将任何事件附加到它;它也非常动态且写得很好。

然后您可以将[HttpPost] 属性放在您的C# 方法上。确保名称正确。

我有点困惑为什么你要在事件中传递你的 C# 方法。你想让它告诉你什么叫这个方法吗?因为您需要将一些特定事件绑定到控件(在本例中为您的复选框)。您肯定不想将所有事件绑定到同一个方法吧?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    相关资源
    最近更新 更多