2010-06-12 3 views
1

Я разрабатываю комментарий страницу в asp.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, кнопка вызовет другое действие, которое сохранит комментарий в базе данных.

Как я могу это сделать?

+0

В общем наконечнике, если вы хотите взаимодействовать с элементами управления на сервере в C# (а не на клиенте в javascript), используя ASP-элементы управления ASP (например, asp: TextBox и asp: Button), а не элементы управления HTML могут помочь. Таким образом, вы можете обратиться к элементу управления с помощью идентификатора (например, this.textArea и this.btnSubmit) и воспользоваться другими преимуществами. – apollodude217

+0

Можете ли вы привести мне пример? –

ответ

3

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

У addNode может быть код, который может быть основан на чем-то в форме?

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

например:

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

EDIT: Поскольку вы хотите позвонить код сервера у вас есть несколько вариантов. Вы можете сделать все это через 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

+0

Я только что нашел этот код в Интернете, но я думаю, что этот код javascript не может получить доступ к другим элементам управления на странице, например Label или что-то еще, и не может подключиться к базе данных. !!! –

+0

Спасибо, это сработало. –

1

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

запустите это на сервере (не на клиентской машине)! КАК ??? –

+0

используйте кнопку, которая вызывает метод «btnSubmit_Click» всякий раз, когда нажимает на нее !!! КАК ? –

+1

* у вас есть код-сзади, правильно? * - вот как. – egrunin

Смежные вопросы