此刻正在处理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.";
}
任何帮助将不胜感激!请原谅我在帖子中的任何不当行为,毕竟这是我的第一个。
答案 0 :(得分:0)
您可以通过输入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#方法感到有些困惑。你想让它告诉你什么甚至称为方法?因为您需要将某些特定事件绑定到控件(在本例中为您的复选框)。当然你不想将所有事件绑定到同一个方法吗?