我正在使用 C#开展 ASP.Net 项目。
通常,当我需要按钮 执行某些方法时,我会在 runat =“server”中使用ASP Controller(Button) 表格。
但我觉得这确实限制了我网站的功能,因为当我以前使用 JSP 时,我使用 jquery 来访问 servlet < / strong>执行一些代码并返回 responseText 。
我没有检查ASP.Net是如何做到的,但我的问题涉及控制器和着名的 runat =“server”。
当我向任何 HTML元素添加 runat =“server”时,我应该能够在C#(服务器端)中操作此HTML元素,这实际上有效,我可以更改 ID ,设置 InnerText 或 InnerHtml ,但是我无法获得的是, 为什么我不能通过单击此元素来执行方法?
我认为“ onclick ”属性适用于JavaScript,而 OnServerClick 似乎也不起作用。我的代码有问题吗?或者这根本不起作用?
答案 0 :(得分:2)
您必须使用div
处理Jquery
中的点击并致电
通过JQuery
答案 1 :(得分:1)
您可以使用__doPostBack javascript函数从服务器中的jquery click执行一个方法,查看此威胁以获取更多详细信息How to use __doPostBack()
答案 2 :(得分:1)
通过单击页面上的div或任何内容,有多种方法可以执行服务器端方法。第一个是__dopostback,第二个是处理javascript或jQuery中的单击,并在处理程序中调用函数或在Web服务中调用页面方法或在页面代码后面调用页面方法。 这是处理程序版本:
$("#btn1").click(function() {
$.ajax({
url: '/Handler1.ashx?param1=someparam',
success: function(msg, status, xhr) {
//doSomething, manipulate your html
},
error: function() {
//doSomething
}
});
});
我认为第二个版本更好,因为你可以在没有任何更新面板的情况下进行部分回发。缺点是,服务器端代码与代码后面的页面分开。
处理程序:
public class Handler1: IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/json";
var param1= context.Request.QueryString["param1"];
//param1 value will be "someparam"
// do something cool like filling a datatable serialize it with newtonsoft jsonconvert
var dt= new DataTable();
// fill it
context.Response.Write(JsonConvert.SerializeObject(dt));
}
}
如果一切都很酷,你会在成功部分的ajax调用中得到响应,而名为“msg”的参数将是你的序列化JSON数据表。
答案 3 :(得分:1)
在div onclick上的jquery中添加此代码,并传递调用点击
的DIv id__doPostBack('__Page', DivID);
在页面加载时添加此代码
if (IsPostBack)
{
//you will get id of div which called function
string eventargs = Request["__EVENTARGUMENT"];
if (!string.IsNullOrEmpty(eventargs))
{
//call your function
}
}
答案 4 :(得分:1)
使div runat =“server”和id =“divName”
在cs中的page_Load事件中:
if (IsPostBack)
{
if (Request["__EVENTARGUMENT"] != null && Request["__EVENTARGUMENT"] == "divClick")
{
//code to run in click event of divName
}
}
divName.Attributes.Add("ondivClick", ClientScript.GetPostBackEventReference(divName, "divClick"));
希望有所帮助:)
答案 5 :(得分:-1)
如果您指的是具有runat =“server”属性的div,则它们没有onserverclick事件,这就是为什么它不起作用