Как перестать перезагружать страницу при нажатии на кнопку?
У меня есть сайт asp.net, который включает в себя некоторые вычисления на кнопку. Когда я нажимаю кнопку, мой расчет работает нормально, но сначала страница обновляется, а затем расчет отображается на этикетке. Я хочу сделать этот расчет выглядит на этикетке напрямую. Без освежения. Я даю несколько кодов.
ps Также Page_Load имеет функцию, которая получает ежедневные курсы обмена
ASP
<asp:Button ID="Button1" runat="server" BackColor="#990000"
BorderColor="#333333" ForeColor="White" onclick="Button1_Click" Text="Calculate"
Width="85px" BorderStyle="Outset" style="margin-left: 20px"
ValidationGroup="grup1" />
КНОПКА КНОПКИ
protected void Button1_Click(object sender, EventArgs e)
{
double sayi1, sayi2, sayi3, hesap, sonuc;
sayi1 = Convert.ToDouble(Tb1.Text);
sayi2 = Convert.ToDouble(Tb2.Text);
sayi3 = Convert.ToDouble(Tb3.Text);
if (Tb1.Text.Contains(".") || Tb2.Text.Contains(".") || Tb3.Text.Contains("."))
{
...
...
...
4 ответа
Используйте AJAX. Если нет, вы всегда будете вызывать событие обратной передачи. Или, с другой стороны, заняться программированием на стороне клиента с помощью JavaScript.
Напишите WebMethod в своем коде и вызовите его через функцию щелчка в jQuery.
$(document).ready(function() {
$("<%= Button1.ClientID%>").click(function() {
$.ajax({
type: "POST",
url: "PageName.aspx/MethodName",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
// Do something interesting here.
}
});
});
});
В коде напишите веб-метод,
public partial class _Default : Page
{
[WebMethod]
public static string MethodName()
{
//Your code for calculation goes over here.
}
}
Вы можете использовать UpdatePanel. ajaxify. Обновление панели в Asp.net
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btn" EventName="Click" />
</Triggers>
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<br />
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<br />
<asp:Label ID="lblResult" runat="server" />
<asp:Button ID="btn" runat="server" OnClick="btn_Click" Text="text" />
</ContentTemplate>
</asp:UpdatePanel>
на ваш код позади. // хотя вам нужно проверить все введенные данные, чтобы избежать форматирования
protected void btn_Click(object sender, EventArgs e)
{
int num1, num2, sum;
TextBox t = (TextBox) UpdatePanel1.FindControl("Textbox1");
num1 = Convert.ToInt32(t.Text);
t = (TextBox)UpdatePanel1.FindControl("Textbox2");
num2 = Convert.ToInt32(t.Text);
sum = num1 + num2;
lblResult.Text = sum.ToString();
}
Create new benchmark or Add rules to a benchmark</h3>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:updatepanel ID="instuctionsUpdate" runat="server" updatemode="Conditional" >
<Triggers>
<asp:AsyncPostBackTrigger ControlID="opener" EventName="click" />
</Triggers>
<ContentTemplate>
<asp:button id="opener" runat="server" Text="Click me for instructions"
onClick="opener_click" EnableTheming="False" EnableViewState="False" />
JavaScript
$("#<%=dialog.ClientID%>").dialog({ autoOpen: false });
$("#<%=opener.ClientID%>").click(function(){
$("#<%=dialog.ClientID%>").dialog("open");
});