C# 如何将runat=server属性添加到html按钮
我有多个html按钮,这些按钮是通过csharp类上的方法从服务器端生成的。C# 如何将runat=server属性添加到html按钮,c#,html,asp.net,webforms,C#,Html,Asp.net,Webforms,我有多个html按钮,这些按钮是通过csharp类上的方法从服务器端生成的。 结果是: <button ID='btn1' runat='server' onserverclick='btn_Click'>Apply</button> <button ID='btn2' runat='server' onserverclick='btn_Click'>Apply</button> <button ID='btn3' runat='server
结果是:
<button ID='btn1' runat='server' onserverclick='btn_Click'>Apply</button>
<button ID='btn2' runat='server' onserverclick='btn_Click'>Apply</button>
<button ID='btn3' runat='server' onserverclick='btn_Click'>Apply</button>
...
<button ID='btnN' runat='server' onserverclick='btn_Click'>Apply</button>
正如你所看到的,我想得到buttonId,但当我点击任何一个按钮时,btn_click不会打电话,我也不能得到buttonId。
我正在使用c#4.0的asp.net网站。 问题是我需要使用服务器端生成按钮,而runat属性不适用于我的方法。我如何解决这个问题?
这是我生成的按钮的方法体
for (int i = 0; i < dt.Rows.Count; i++)
{
DateTime dtTemp = DateTime.Parse(dt.Rows[i]["messageDate"].ToString());
if (dt.Rows[i]["isRead"].ToString() == "True")
readed = "MessageReaded";
else
readed = "MessageNew";
post += "<div class='modal fade' id='myModal" + dt.Rows[i]["messageId"].ToString() + "' tabindex='-1' role='dialog' aria-labelledby='myModalLabel'>"
+ "<div class='modal-dialog' role='document'>"
+ "<div class='modal-content'>"
+ "<div class='modal-header'><button type='button' class='close' data-dismiss='modal' aria-label='Close'><span aria-hidden='true'>×</span></button><h4 class='modal-title' id='myModalLabel'><span style='font-weight:bold'>subject</span> : " + dt.Rows[i]["subject"].ToString() + "</h4></div>"
+ "<div class='modal-header'><p><span style='font-weight:bold'>date</span> : " + dtTemp.ToString("yyyy/MM/dd") + "</p>"
+ "<p><span style='font-weight:bold'>Time</span> : " + dt.Rows[i]["messageTime"].ToString() + "</p>"
+ "<p><span style='font-weight:bold'>email</span> : " + dt.Rows[i]["email"].ToString() + "</p></div>"
+ "<div class='modal-body'>" + dt.Rows[i]["message"].ToString() + "</div>"
+ "<div class='modal-footer'><button type='button' class='btn btn-default' data-dismiss='modal'>close</button>"
+ "<button ID='btn" + dt.Rows[i]["messageId"].ToString() + "' class='btn btn-danger' onclick='DeleteMessage_Click'>Delete</button></div>"
+ "</div></div></div>";
string narrow = Special.TimeToNarrow(dt.Rows[i]["messageDate"].ToString(), dt.Rows[i]["messageTime"].ToString());
post += "<a data-toggle='modal' data-target='#myModal" + dt.Rows[i]["messageId"].ToString() + "' href='#' class='list-group-item " + readed + "'><span class='badge'>" + narrow + "</span><i class='fa fa-fw fa-comment'></i> <span>"
+ dt.Rows[i]["name"].ToString() + "</span> : <span>" + dt.Rows[i]["subject"].ToString() + "</span></a>";
}
for(int i=0;i”
+时间:“+dt.Rows[i][“messageTime”].ToString()+””
+“电子邮件:”+dt.Rows[i][“电子邮件”].ToString()+“”
+“”+dt.Rows[i][“message”].ToString()+“”
+“结束”
+“删除”
+ "";
string shorrow=Special.TimeToNarrow(dt.Rows[i][“messageDate”].ToString(),dt.Rows[i][“messageTime”].ToString());
职位+=”;
}
所以问题出在删除
编辑我的帖子:如您所见,我无法使用asp:按钮,因为使用了引导模式。如果您认为我仍然可以使用asp:按钮,请编写您的代码并演示如何使用。谢谢服务器上没有
,请单击asp中的。
您应该添加asp:Button
标记,而不是只添加按钮
,而不是服务器上的单击
只添加OnClick
比如:
<asp:Button ID='btn1' runat='server' Text="Apply" OnClick='btn_Click'/>
编辑
按钮生成方法应如下所示:
for (int i = 0; i < dt.Rows.Count; i++){
<div class='modal fade' id='myModal" + dt.Rows[i]["Id"].ToString() + "' tabindex='-1' role='dialog' aria-labelledby='myModalLabel'>
<div class='modal-dialog' role='document'>
<div class='modal-content'>
<div class='modal-header'><button type='button' class='close' data-dismiss='modal' aria-label='Close'><span aria-hidden='true'>×</span></button><h4 class='modal-title' id='myModalLabel'><span style='font-weight:bold'>subject</span> :subject</h4></div>
<div class='modal-header'><p><span style='font-weight:bold'>Date</span> : yyyy/MM/dd</p>
<p><span style='font-weight:bold'>Time</span>messageTime</p>
<p><span style='font-weight:bold'>Email</span>email</p>
</div>
<div class='modal-body'>message</div>
<div class='modal-footer'>
<button type='button' class='btn btn-default' data-dismiss='modal'>close</button>
<asp:Button ID='btn" + dt.Rows[i]["messageId"].ToString() + "' runat='server' class='btn btn-danger' OnClick='DeleteMessage_Click'>Delete</button>
</div>
</div>
</div>
for(int i=0;i
时间信息时间
电子邮件
消息
关闭
删除
您可以在这一行看到:Delete
我已经用asp:button
更改了按钮
,用OnClick
更改了onserverclick
前面的注释是正确的,asp.net服务器控件中没有onserverclick。onserverclick仅适用于html控件。
下面代码段做工作
protected void btn1_ServerClick(object sender, EventArgs e)
{
HtmlButton btn = (HtmlButton)sender;
btn.InnerText = btn.ID;
}
将发件人强制转换为HtmlButton以访问ID。必须使用名称空间“System.Web.UI.HtmlControl”
编辑:
如果按钮是动态生成的,那么最好使用服务器按钮控件
<asp:Button ID="btnAddUser" runat="server" Text="Add" OnClick="btnAddUser_Click" />
正如其他人所说,问题是当您将控件生成为HTML字符串时,ASP.NET无法识别runat=“server”
您的代码可能应该以一种非常不同的方式来完成,但是如果您希望对已经完成的工作进行更改,那么您可以以一种稍微不同的方式来完成
与按钮上的runat=“server”
不同,让它们提交按钮并为它们分配名称和值,例如
与此相反:
<button ID='btn1' runat='server' onserverclick='btn_Click'>Apply</button>
<button ID='btn2' runat='server' onserverclick='btn_Click'>Apply</button>
<button ID='btn3' runat='server' onserverclick='btn_Click'>Apply</button>
下面是一个小示例,它有三个按钮,并显示单击的按钮数:
Test.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="Test" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<button name="btn" type="submit" value="1">Apply</button>
<button name="btn" type="submit" value="2">Apply</button>
<button name="btn" type="submit" value="3">Apply</button>
</form>
</body>
</html>
@BlueMoon:是的,但是你没有在你的代码中使用OnClick
,而是onserver-click
。+1对于这个答案,你认为我必须使用click而不是onserver-click来使用我的方法吗?我需要使用html按钮,那么你有什么建议吗?@BlueMoon如果没有
标记,你就不能使用runat
属性。不,不因为body是一个字符串,我不能通过字符串生成asp控件。我只想显示text的结果。我有多个从服务器端生成的html按钮。你是说,你一直在用runat=“server”添加html按钮属性动态转换为文本。如果这是您试图执行的操作,那么很抱歉,我的朋友,这在这个时代是不可能的。代码不是用于动态生成的按钮。最好使用服务器控件。没有什么是不可能的…非常好的解决方案!。非常感谢您为我节省了时间:***
<button name="btn" type="submit" value="1">Apply</button>
<button name="btn" type="submit" value="2">Apply</button>
<button name="btn" type="submit" value="3">Apply</button>
if (Page.IsPostBack)
{
if (Request.Form["btn"] != null)
{
//A btn was clicked, get it's value
int btn = int.Parse(Request.Form["btn"]);
//Do something with this btn number
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="Test" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<button name="btn" type="submit" value="1">Apply</button>
<button name="btn" type="submit" value="2">Apply</button>
<button name="btn" type="submit" value="3">Apply</button>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
if (Request.Form["btn"] != null)
{
int btn = int.Parse(Request.Form["btn"]);
Response.Write(btn);
}
}
}
}