using Visual.Web.Developer.2010.Express;
using SQL.Server.Management.Studios.R2.Express;
我正在尝试做的是,点击一个按钮时会得到一个按钮来运行一些C#..听起来很简单,对吧?我被困在这个部位。
我在HTML输入中的用户按键时创建了一个span(Jquery UI按钮)。一旦他们点击了跨度,就会保存用户输入的内容并将其发送到数据库......好吧,还没有。我正在构建这个,我被困在这一部分。
可以在span标签中附加按钮点击通过属性,正确吗?
<span class="ui-state-default ui-corner-all ui-icon-disk ui-icon saveButton" title="Save" style="float:left" onclick="Button1_Click"></span>
C#
protected void Button1_Click(object sender, EventArgs e)
{
Console.WriteLine("Hello World");
}
看起来很简单吧?当我在调试中运行它时,Firebug读取“Button1_Click未定义”
。
。
。
请给我一些见解!
我的HTML / Javascript代码
<script type="text/javascript">
$(document).ready(function () {
$('.hexen').after('<span class="ui-state-default ui-corner-all ui-icon-disk ui-icon saveButton" title="Save" style="float:left" onclick="Button1_Click"></span>')// ui icon
.keypress(function () {
$(this).next('.saveButton').show();
}); //adds ui icon
$('.ui-state-default').hover(
function () {
$(this).addClass('ui-state-hover');
}, function () {
$(this).removeClass('ui-state-hover');
}); //ui icon hover
$('.saveButton').click(function () {
var id = $(this).prev().attr('id'); //used in the "data" attribute of the ajax call
var value = $(this).prev().val(); //used in the "data" attribute of the ajax call
$.ajax({
type: "POST",
url: "Default.aspx",
data: "{Id: " + id + ", Value: " + value + "}",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
console.log(data);
}
});
$(this).hide();
}); //runs ajax call and removes ui-icon after .saveButton is clicked
}); //end .ready
</script>
<input type="text" class="hexen" id="investigate1"/><br />
<input type="text" class="hexen" id="investigate2"/><br />
<input type="text" class="hexen" id="investigate3"/><br />
<input type="text" class="hexen" id="investigate4"/><br />
<input type="text" class="hexen" id="investigate5"/>
提前谢谢!
答案 0 :(得分:2)
Button1_Click
是服务器端按钮单击处理程序,您无法使用onclick
属性从客户端调用它。
onclick
将始终在客户端JavaScript代码中查找处理程序或方法。
您必须使用Asp.Net
按钮控件,该控件将在页面上呈现必要的方法以执行回发到服务器。
点击Asp.Net
按钮后,它会将当前页面提交给服务器,并向asp.net框架提供必要的详细信息,以便它执行所需的按钮点击处理程序。
E.g。您可以像这样使用LinkButton
控件并指定OnClick
属性到Button1_Click
和OnClientClick
属性来调用任何客户端javascript方法。
<asp:LinkButton Text="Click me!"
OnClick="Button1_Click" runat="server"
OnClientClick="clientSideJavaScriptFunction()" />
答案 1 :(得分:1)
从它的外观来看,你不需要跨度的'onclick'处理程序,因为你无论如何都要在javascript中绑定它:
$('.saveButton').click(....);
此外,您在空间中获得的onclick
处理程序引用了C#事件的服务器端处理程序,而不是javascript事件的客户端处理程序。 onclick
的值必须是javascript中客户端代码可用的函数。如果你想点击一个按钮将数据发布到服务器,那么你需要在javascript中做一个AJAX请求(就像你一样)。
最后,您尝试在javascript中绑定到.saveButton
的事件处理程序将无法正常工作,因为您在文档加载完成之前尝试绑定它(可能)。在after
上调用.hexen
后,将事件绑定移动到document.ready块中。
答案 2 :(得分:0)
我不确定它在C#中是如何工作的,但我认为你需要在ajax调用的URL中引用该函数。
url: "Default.aspx/Button1_Click",
Button1_Click
可能必须是公共职能才能发挥作用。
编辑:查看本页“使用jQuery调用页面方法”部分:http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/