为了确保正确编写事件处理程序,我通常会让Visual Studio为我生成事件。但是,我找不到用div做这个的方法,我试着自己输入它无济于事。如果没有编写任何JavaScript,这是否可行? (我看到了类似的问题,但似乎找不到符合我需要的任何东西)。
编辑:基本上我有一个注销div伪装成用户作为按钮。当他们点击它时,我希望发生以下情况:
protected void LogOff_Click(object sender, EventArgs e)
{
FormsAuthentication.SignOut();
Session.Abandon();
//This will clear the authentication cookie
HttpCookie myHttpCookie = new HttpCookie(FormsAuthentication.FormsCookieName, "");
myHttpCookie.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(myHttpCookie);
//This will clear the session cookie (not required for my application but applying to be safe)
HttpCookie myHttpCookie2 = new HttpCookie("ASP.NET_SessionId", "");
myHttpCookie2.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(myHttpCookie2);
FormsAuthentication.RedirectToLoginPage();
}
以下是我称之为此事件的地方:
<a href="Log_In.aspx"><span class="MenuItem" runat="server" onclick="LogOff_Click">Log Off</span></a>
答案 0 :(得分:8)
您的LogOff_Click
没问题。但是,您需要修改标记。将onserverclick
事件应用于<a>
标记,而不是<span>
。在您的情况下,请尝试以下方法:
<a href="Log_In.aspx" runat="server" onserverclick="LogOff_Click"><span class="MenuItem">Log Off</span></a>
答案 1 :(得分:6)
div
元素支持javascript事件onclick
,因此您可以执行此操作。
您可以通过查看w3c shools tag definition来检查html元素是否支持给定事件。
我不清楚你究竟是什么意思。你可以在客户端使用javascript做很多事情。 onclick
是javascript,但您也可以使用服务器端重定向(ASP.NET Webforms上的回发)。使用javascript做的事情是,没有做ajax,服务器不明显,导致javascript被浏览器处理。
查看我的示例和此jsFiddle Demonstration
<div>
代码<强> HTML 强>
<div onclick="alert('hello');">hello world</div>
答案 2 :(得分:2)
如果您想继续使用ASP.NET,可以使用Panel
控件并执行以下操作:
<强>标记强>
<body>
<form id="form1" runat="server">
<div>
<asp:Panel runat="server" ID="pan1">click here</asp:Panel>
</div>
</form>
</body>
代码背后
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
pan1.Attributes.Add("onclick", "javascript:alert('here');return false;");
}
}
您仍然在编写JavaScript,但您仍然使用ASP.NET控件和ASP.NET设置客户端事件的方式。
我实际上更喜欢dknaack和Silvertiger的方法 - 将事件放在客户端代码中(最好是javascript文件而不是内联)。
答案 3 :(得分:0)
标准DOM和CSS将允许此
<div style="cursor:hand;" onclick="this.document.location.href ='http://www.google.com';">
My content
</div>
应该做的伎俩
答案 4 :(得分:0)
不确定您打算做什么。触发onclick事件时,您需要在触发事件时调用处理程序。这是通过Javascript完成的。
您可以在JavaScript中执行表单提交,或在Javascript中触发Ajax回调,以与.NET应用程序进行交互。
回答原始问题,可以通过<div>
标记触发onclick事件。确保您针对Internet Explorer 7/8(兼容模式)进行测试,因为并非所有事件都在IE 7/8中运行。在Firefox,Chrome和IE9中应该没问题。将其保存在文件和实验中。
<html>
<head>
<script type="text/javascript">
function JSFn()
{
//you can use the div ID if needed: var id = document.getElementById('div_id');
alert("JSFn was called");
//Can do form submit or Ajax callback to interact with .NET app
}
</script>
</head>
<body>
<div>
<a id="anchor1" href="javascript:JSFn();">Make a clickable link here, you can use onclick and href='#' </a>
</div>
<div id="div_id2" onclick="JSFn()">Just click here </div>
</body>
</html>