在一个按钮ASP.NET中启动两个动作

时间:2010-06-12 17:17:04

标签: javascript asp.net ajax vb.net

我正在asp.net开发一个评论页面,这是我的页面:

<form action="#">
<p><textarea id="textArea" rows="5" cols="30"></textarea></p>
<input type="submit" value="Submit" />
</form>
<p>Add some comments to the page</p>

这是我的javascript代码:

window.onload = initAll;

function initAll() {
document.getElementsByTagName("form")[0].onsubmit = addNode;
}

function addNode() {
var inText = document.getElementById("textArea").value;
var newText = document.createTextNode(inText);
var newGraf = document.createElement("p");
newGraf.appendChild(newText);
var docBody = document.getElementsByTagName("body")[0];
docBody.appendChild(newGraf);
return false;
}

在此之前,一切都很好,但我希望当用户点击submit按钮时,该按钮会触发另一个操作,将注释保存在数据库中。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

为什么你没有一个包装器仍然使它成为一个功能?

addNode可能有代码可以根据表单中的内容进行操作吗?

您可以拥有一个包含addNodeaddComment

的提交功能

例如:

function handleSubmit()
{
    addNode();
    addComment();
    return false;
}

编辑:由于您要调用服务器代码,因此您有几个选项。您可以通过ajax完成所有操作,您只需要实现addComment函数来调用服务器端事件。如果您需要帮助,请参阅此文章:

http://www.dexign.net/post/2008/07/16/jQuery-To-Call-ASPNET-Page-Methods-and-Web-Services.aspx

最简单的方法是将按钮更改为ASP.NET按钮,然后实现按钮单击事件,该事件将调用服务器端方法,尽管这会导致整页刷新。

两者的混合,很容易实现,将使用UpdatePanel。当您单击按钮时,您将获得AJAX解决方案的外观和感觉,但只需知道如何执行所有服务器端代码并​​让UpdatePanel处理所有AJAX工作。这个方法比只做一个原始的ajax调用稍微重一点,但它要简单得多。

您可以在UpdatePanels上阅读:http://msdn.microsoft.com/en-us/library/bb399001.aspx

答案 1 :(得分:1)

使用asp:Button,而不是使用HTML输入标记,如下所示:

<asp:Button ID="btnSubmit" runat="server" OnClick="btnSubmit_Click" />

这就是说,只要点击它就使用一个调用“btnSubmit_Click”方法的Button,并在服务器上运行(而不是在客户机上)。

然后在您的代码隐藏中(您确实有代码隐藏,对吗?例如,nameOfPage.aspx.cs),您可以添加上述btnSubmit_Click方法:

protected void btnSubmit_Click(object sender, System.EventArgs e) {
    // interact with database here.
}