Codebehind不会创建按钮单击事件

时间:2017-09-08 18:49:58

标签: c# asp.net visual-studio-2017

我在Visual Studio 2017社区的新安装中创建了一个ASP.NET Empty网站。我正在尝试复制以下教程中显示的步骤:https://youtu.be/5dCAXwhjIYU

我只需在表单上种植三个文本框,并提交一个提交按钮。当我双击该按钮时,IDE只会在页面的源视图中突出显示该按钮的HTML。它不会在代码隐藏中创建事件处理程序,如视频中所示并且符合预期。

我手动为后面的代码中的按钮单击创建了事件处理程序。当我尝试运行代码时,它告诉我我引用的字段不存在:

  

错误CS0103名称'用户名'在当前上下文中不存在

这是我的HTML代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Users.aspx.cs" Inherits="Users" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div>
            UserName<br />
            <input id="UserName" type="text" /><br />
            UserEmail<br />
            <input id="UserEmail" type="text" /><br />
            UserCampus<br />
            <input id="UserCampus" type="text" /><br />
            <input id="SaveUser" type="submit" value="submit" /></div>
    </form>
</body>
</html>

C#代码:

public partial class Users : System.Web.UI.Page
{
    protected void SaveUser_Click(object sender, EventArgs e)
    {
        SqlConnection BIGateConnection = new SqlConnection("Data Source=xxxxxxx;Initial Catalog=xxxxxxx;Integrated Security=True");
        {
            SqlCommand BIGateSQLCmd = new SqlCommand("Insert into [BIGateway].[dbo].[User] (UserName, userEmail, userCampus) VALUES (@userName, @userEmail, @userCampus)", BIGateConnection);
            BIGateSQLCmd.Parameters.AddWithValue("@", UserName.Text);
            BIGateSQLCmd.Parameters.AddWithValue("@", UserEmail.Text);
            BIGateSQLCmd.Parameters.AddWithValue("@", UserCampus.Text);
        }
    }
}

我到底做错了什么?

3 个答案:

答案 0 :(得分:3)

如果你已经使用HTML文本框,那么代码如下:

<input id="UserName" type="text" /><br />

在此,你必须自己添加一行作为runat =&#34; server&#34;

看起来如下:

<input id="UserName" type="text"  runat="server"/><br />

然后您可以将它用于服务器端。

希望它有所帮助。

答案 1 :(得分:1)

视频未显示ASPX页面。我相信他使用了 TextBox 按钮 服务器控件。

<form id="form1" runat="server">
    <div>
        UserName<br />
        <asp:TextBox runat="server" ID="UserName"/><br />
        UserEmail<br />
        <asp:TextBox runat="server" ID="UserEmail"/><br />
        UserCampus<br />
        <asp:TextBox runat="server" ID="UserCampus"/><br />
        <asp:Button runat="server" ID="SaveUser" OnClick="SaveUser_Click" Text="Submit"/>
    </div>
</form>

如果他将常规html inputrunat="server"一起使用,则必须在UserName.Value事件中访问Button1_Click内的值,而不是var line = turf.lineString(Your polyline coordinates in GeoJson array); var pt = turf.point([Marker_Lon, Marker_Lat]); var snapped = turf.pointOnLine(line, pt); var pstnOnLine = { lat: snapped.geometry.coordinates[1], lng: snapped.geometry.coordinates[0] }; var distToLine = snapped.properties.dist

答案 2 :(得分:0)

Afais你没有找到按钮的点击事件。 添加

SaveUser.OnClick += SaveUser_Click;

到page_load事件。

一般来说我更喜欢asp:Button而不是输入。 事实上,它被渲染为输入控件。但有更多的选择。但确实是runat =&#34;服务器&#34;输入缺失。