запустить два действия в одной кнопке ASP.NET - PullRequest
1 голос
/ 12 июня 2010

Я разрабатываю страницу комментария в 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 ]

3 голосов
/ 12 июня 2010

Почему у вас нет обертки и вы все равно делаете ее одной функцией?

В addNode может быть код для выполнения обоих задач, возможно, на основе чего-то в форме?

Вы могли быесть функция отправки, которая упаковывает addNode и addComment.

например:

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 голос
/ 12 июня 2010

Вместо использования тега ввода 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.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...