Почему мои кнопки HTML в Visual Studio не создают обработчики событий при двойном щелчке? - PullRequest
0 голосов
/ 20 мая 2019

Я добавил кнопки в веб-форму в Visual Studio 2015 с использованием HTML. Таким образом, эти кнопки находятся на вкладке дизайна. Когда я дважды нажимаю кнопку на вкладке «Дизайн». Он не открывает страницу ASPX.CS. Это нормально? У меня сложилось впечатление, что я буду так работать. Вместо этого я должен идти и вручную кодировать каждый обработчик событий.

Я искал в Google и пытался запустить ремонт в Visual Studio, но безрезультатно.

<%@ Page Language="C#" AutoEventWireup="true" 
CodeBehind="WebForm1.aspx.cs" Inherits="Module2LabExercise.WebForm1" %>

<!DOCTYPE html> 
<html>  
    <head>    
    <title> 
        Currency Converter
    </title>  
</head>  
<body>    
    <form runat = "server">      
        <div>        
            Convert: &nbsp;        
            <input type = "text" ID = "US" runat = "server" />        
            &nbsp; U.S. dollars to &nbsp;        
            <select ID = "Currency" runat = "server" />        
            <br /> <br />       
            <input type = "submit" value = "OK" ID = "Convert" 
OnServerClick = "Convert_ServerClick" runat = "server" />  
            <input type = "submit" value = "Show Graph" ID = "ShowGraph" 
OnServerClick = "ShowGraph_ServerClick" runat = "server" />      
            <br /> <br />          
            <img id="Graph" runat="server" src="//:0"/>
            <br /> <br />        
            <p style = "font-weight: bold" ID = "Result" runat = "server" 
>
            </p>  
        </div>    
   </form>  
    </body> 
</html>

`

Я думал, что если я дважды нажму на кнопку. Это автоматически откроет обработчик событий и создаст обработчик событий. Если я не прав. Пожалуйста, поправьте меня и дайте мне знать. Просто приехал сюда, потому что у меня нет идей.

Ответы [ 3 ]

0 голосов
/ 20 мая 2019

VS не будет делать это для тегов, не относящихся к ASP, но если вместо этого указать:

<asp:Button ID="Convert"  runat="server" />

вместо

<input type = "submit" ID = "Convert" runat = "server" />  

Тогда вы получите эту функцию

0 голосов
/ 20 мая 2019

Что касается

Не открывается страница ASPX.CS.Это нормально?

да, это нормально, поскольку кнопка представляет собой HTML input[type="submit"] с runat="server, а не asp.net завернутую кнопку, например: <asp:button>.Следовательно, он не передается Asp.net.

И почему вы используете runat="server" для кнопки HTML?Если вы действительно хотите, чтобы событие на стороне сервера вызывалось, используйте <asp:Button>, таким образом вы сможете создать click-event при двойном щелчке по кнопке.

Но если вы все равно продолжите использовать еговам нужно 3 способа присоединить обработчик событий click к кнопке HTML.

Обработчик событий на странице дизайнера aspx .

//attach a script tag to your aspx page and add the click event to it.

<script language="C#" runat="server"> 
    protected void Convert_ServerClick_manual1(object sender, EventArgs e)
    {
        //your code here
    }
</script>

Теперь просто добавьте атрибут onserverclick="Convert_ServerClick_manual1" к кнопке.

Присоедините обработчик событий к событию pageload aspx.cs page

protected void Page_Load(object sender, EventArgs e)
{
    Convert.Click += Convert_ServerClick_manual2;
}

теперь определяет обработчик событий под событием pageload:

private void Convert_ServerClick_manual2(object sender, EventArgs e)
{
    //your code here
}

Ручной обработчик событий

//just create the event handler for your button on the `aspx.cs` page and paste the handler name to the `HTML` button.

private void Convert_ServerClick_Manual3(object sender, EventArgs e)
{
    //your code here
}

Затем на странице дизайна используйте:

<input type = "submit" value = "OK" ID = "Convert" OnServerClick = "Convert_ServerClick_manual3" runat = "server" /> 

вручную создайте event handler для ввода button[runat="server"] в <yourPage>aspx.cs и присоедините его к кнопке HTML.

0 голосов
/ 20 мая 2019

вы добавляете этот код в ваш бэкэнд реализации кнопки: вот код

Response.redirect("ex.aspx");

ex.aspx - ваше имя файла

если не работает, добавьте:

Server.Transfer("ex.aspx");
...