【问题标题】:launch two actions in one button ASP.NET一键启动两个动作 ASP.NET
【发布时间】:2011-03-03 01:12:41
【问题描述】:

我正在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 按钮时,该按钮将触发另一个将评论保存在数据库中的操作。

我该怎么做?

【问题讨论】:

  • 作为一般提示,如果您想在 C# 中与服务器上的控件进行交互(而不是在 javascript 中的客户端上),请改用 asp .NET 控件(例如 asp:TextBox 和 asp:Button)的 HTML 控件可能会有所帮助。这样,您可以通过 id 引用控件(例如 this.textArea 和 this.btnSubmit),并获得其他好处。

标签: javascript asp.net ajax vb.net


【解决方案1】:

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

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

【讨论】:

  • 我刚刚在互联网上找到了这段代码,但我认为这段javascript代码无法访问页面中的其他控件,如标签或其他东西,也无法连接到数据库。 !!!
【解决方案2】:

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

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

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

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

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

【讨论】:

  • 使用一个按钮,只要点击它就会调用“btnSubmit_Click”方法!!!怎么样?
  • @AZIRAR:只有您的服务器应该与数据库对话,而不是您的客户端浏览器。客户端浏览器将数据发送到服务器,服务器将其保存到数据库中。
猜你喜欢
  • 2020-12-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-06
  • 1970-01-01
  • 1970-01-01
  • 2015-09-05
  • 1970-01-01
  • 2012-02-14
相关资源
最近更新 更多