在c#中,如何查看页面加载方法中是否已单击链接按钮?
我需要知道在点击事件被触发之前是否被点击了。
答案 0 :(得分:20)
if( IsPostBack )
{
// get the target of the post-back, will be the name of the control
// that issued the post-back
string eTarget = Request.Params["__EVENTTARGET"].ToString();
}
答案 1 :(得分:4)
如果这不起作用。请尝试UseSubmitBehavior="false"
答案 2 :(得分:2)
检查请求参数__EVENTTARGET的值,看它是否是相关链接按钮的id。
答案 3 :(得分:2)
按钮的UniqueID将在Request.Form [“__ EVENTTARGET”]
中答案 4 :(得分:1)
根据接受的答案和RealSteel的答案,这可能是一个更完整的答案。
首先将.aspx添加到这样一个按钮:
<asp:Button id="btnExport" runat="server" Text="Export" UseSubmitBehavior="false"/>
然后在Page_Load方法:
if(IsPostBack){
var eventTarget = Request.Params["__EVENTTARGET"]
// Then check for the id but keep in mind that the name could be
// something like ctl00$ContainerName$btnExport
// if the button was clicked or null so take precautions against null
// ... so it could be something like this
var buttonClicked = eventTarget.Substring(eventTarget.LastIndexOf("$") + 1).Equals("btnExport")
}
答案 5 :(得分:0)
我遇到了同样的麻烦,必须在Page_Load方法中做一些逻辑判断来处理不同的事件(点击了哪个按钮)。
我意识到要获得以下示例的手臂。
前端aspx源代码(我有许多ID为F2,F3,F6,F12的按钮。
<Button Style="display: none" ID="F2" runat="server" Text="F2:Cancel" OnClientClick="SeiGyo(this)" OnClick="F2_Click" />
<Button Style="display: none" ID="F3" runat="server" Text="F3:Return" OnClientClick="SeiGyo(this)" OnClick="F3_Click" />
<Button Style="display: none" ID="F6" runat="server" Text="F6:Run" OnClientClick="SeiGyo(this)" OnClick="F6_Click" />
<Button Style="display: none" ID="F12" runat="server" Text="F12:Finish" OnClientClick="SeiGyo(this)" OnClick="F12_Click" />
后端aspx.cs源代码,我需要做的是判断触发Page_Load时点击了哪个按钮。这似乎有点愚蠢,但有效。我希望这会对其他人有所帮助
Dictionary<string, string> dic = new Dictionary<string, string>();
foreach(var id in new string[]{"F2","F3","F6","F12"})
{
foreach (var key in Request.Params.AllKeys)
{
if (key != null && key.ToString().Contains(id))
dic.Add(id, Request[key.ToString()].ToString());
}
}