ASP.NET: проверьте наличие события клика в page_load - PullRequest
12 голосов
/ 09 октября 2008

В c # как я могу проверить, была ли нажата кнопка ссылки в методе загрузки страницы?

Мне нужно знать, был ли он нажат до запуска события click.

Ответы [ 6 ]

20 голосов
/ 09 октября 2008
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();
}
4 голосов
/ 28 января 2015

, если это не сработает. Попробуйте UseSubmitBehavior="false"

2 голосов
/ 09 октября 2008

Уникальный идентификатор кнопки будет указан в Request.Form ["__ EVENTTARGET"]

2 голосов
/ 09 октября 2008

Проверьте значение параметра запроса __EVENTTARGET, чтобы увидеть, является ли это идентификатором рассматриваемой кнопки ссылки.

1 голос
/ 04 декабря 2015

На основании принятого ответа и ответа 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")

}
0 голосов
/ 20 апреля 2017

У меня возникла та же проблема, я должен сделать логическое суждение в методе 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()); 
                    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...