В С#, как я могу проверить, была ли нажата кнопка ссылки в методе загрузки страницы?
Мне нужно знать, было ли это нажато до того, как произойдет событие клика.
В С#, как я могу проверить, была ли нажата кнопка ссылки в методе загрузки страницы?
Мне нужно знать, было ли это нажато до того, как произойдет событие клика.
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();
}
Проверьте значение параметра запроса __EVENTTARGET, чтобы узнать, является ли он идентификатором соответствующей ссылки.
Уникальный идентификатор кнопки будет в Request.Form [ "__ EVENTTARGET" ]
если это не работает. Попробуйте UseSubmitBehavior="false"
На основе принятого ответа и ответа 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")
}
У меня только те же проблемы, нужно сделать некоторые логические суждения в методе Page_Load для обработки разных событий (нажата кнопка).
Я понимаю руку, чтобы получить следующий пример.
Исходный код aspx для конечного конца (у меня есть много кнопок с идентификаторами 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());
}
}