C# 为什么我的页面为我的文本框传递一个空白值

C# 为什么我的页面为我的文本框传递一个空白值,c#,asp.net,C#,Asp.net,我昨晚问了这个问题,但写得不太好,所以我要再问一遍。我正在创建一个简单的计算器,使用ASP.NET和c#作为我的代码。我目前正在尝试测试并确保我的代码隐藏正在获取用户在文本框中输入的值。我放入了一个if语句,如果传递给文本框的字符串为空,则为文本框指定一个mehhh值。我的文本框显示mehhh,所以我知道它得到的是一个空字符串,但我不知道为什么?这里是一个链接到该网站。。。以下是我的页面代码隐藏部分的代码: public partial class Assign2_Calc : System

我昨晚问了这个问题,但写得不太好,所以我要再问一遍。我正在创建一个简单的计算器,使用ASP.NET和c#作为我的代码。我目前正在尝试测试并确保我的代码隐藏正在获取用户在文本框中输入的值。我放入了一个if语句,如果传递给文本框的字符串为空,则为文本框指定一个mehhh值。我的文本框显示mehhh,所以我知道它得到的是一个空字符串,但我不知道为什么?这里是一个链接到该网站。。。以下是我的页面代码隐藏部分的代码:

  public partial class Assign2_Calc : System.Web.UI.Page
  {
     protected void ButtonEqual_Click(object sender, EventArgs e)
     {
       string inputStr = inputBox.Text;
       if (inputStr == string.Empty)
       {
         inputBox.Text = "mehhhhhh";
       }
       else
       {
      inputBox.Text = inputStr; //result.ToString();
    }
  }

 }  
以下是我的.aspx页面:

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

      <!DOCTYPE html>






     <html xmlns="http://www.w3.org/1999/xhtml">
     <head id="Head1" runat="server">
     <title></title>
     <link href="CalculatorStyle.css" rel="stylesheet" type="text/css" />

     <script>
     var maxInputLength = 20;

     function checkButtonClick(clickedValue) {
      var buttonValue = clickedValue;
      var inputStr = document.getElementById('inputBox').value;

      if (buttonValue == '<--') {
          if (inputStr.length >= 1) {
              document.getElementById('inputBox').value = inputStr.substring(0,      inputStr.length - 1);

          }
      }

      else if (buttonValue == 'C') {
          document.getElementById('inputBox').value = "";
      }
      else {
          if (inputStr.length < maxInputLength) {
              document.getElementById('inputBox').value = inputStr + buttonValue;
          }
          else {
              //document.getElementById('msg').innerHTML = "Maxmum length is " +  maxInputLength;
          }
      }
      return false;
  }

  </script>
  </head>

<body>
<form id="form1" runat="server">
<div>
    <div id="main" class="main">
        <div id="content" class="content">
            <h3 id="h3">Simple Calculator</h3>
                <div id="calculatorDiv">
                    <table cellpadding="0" cellspacing="0">
                    <tr>
                        <td colspan="4">
                           <asp:TextBox runat="server" CssClass="inputBox" ReadOnly="true" ViewStateMode="Enabled" ID="inputBox"></asp:TextBox>
                        </td>
                    </tr>
                    <tr>
                        <td colspan="4">
                            <br />
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <asp:Button ID="ButtonNum7" runat="server" Text="7" CssClass="CalcButtons" OnClientClick="return checkButtonClick(7)" />
                        </td>
                        <td>
                            <asp:Button ID="ButtonNum8" runat="server" Text="8" CssClass="CalcButtons" OnClientClick="return checkButtonClick(8)" />
                        </td>
                        <td>
                            <asp:Button ID="ButtonNum9" runat="server" Text="9" CssClass="CalcButtons" OnClientClick="return checkButtonClick(9)" />
                        </td>
                        <td>
                            <asp:Button ID="ButtonDivide" runat="server" Text="/" CssClass="CalcButtons" OnClientClick="return checkButtonClick('/')" />
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <asp:Button ID="ButtonNum4" runat="server" Text="4" CssClass="CalcButtons" OnClientClick="return checkButtonClick(4)" />
                        </td>
                        <td>
                            <asp:Button ID="ButtonNum5" runat="server" Text="5" CssClass="CalcButtons" OnClientClick="return checkButtonClick(5)" />
                        </td>
                        <td>
                            <asp:Button ID="ButtonNum6" runat="server" Text="6" CssClass="CalcButtons" OnClientClick="return checkButtonClick(6)" />
                        </td>
                        <td>
                            <asp:Button ID="ButtonMultiply" runat="server" Text="*" CssClass="CalcButtons" OnClientClick="return checkButtonClick('*')" />
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <asp:Button ID="Button1" runat="server" Text="1" CssClass="CalcButtons" OnClientClick="return checkButtonClick(1)" />
                        </td>
                        <td>
                            <asp:Button ID="Button2" runat="server" Text="2" CssClass="CalcButtons" OnClientClick="return checkButtonClick(2)" />
                        </td>
                        <td>
                            <asp:Button ID="Button3" runat="server" Text="3" CssClass="CalcButtons" OnClientClick="return checkButtonClick(3)" />
                        </td>
                        <td>
                            <asp:Button ID="ButtonSubtract" runat="server" Text="-" CssClass="CalcButtons" OnClientClick="return checkButtonClick('-')" />
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <asp:Button ID="ButtonDackspace" runat="server" Text="<--" CssClass="CalcButtons" OnClientClick="return checkButtonClick('<--')" />
                        </td>
                        <td>
                            <asp:Button ID="ButtonNum0" runat="server" Text="0" CssClass="CalcButtons" OnClientClick="return checkButtonClick(0)" />
                        </td>
                        <td>
                            <asp:Button ID="ButtonClear" runat="server" Text="C" CssClass="CalcButtons" OnClientClick="return checkButtonClick('C')" />
                        </td>
                        <td>
                            <asp:Button ID="ButtonAdd" runat="server" Text="+" CssClass="CalcButtons" OnClientClick="return checkButtonClick('+')" />
                        </td>
                    </tr>
                    <tr>
                        <td colspan="4">
                            <asp:Button ID="ButtonEqual" runat="server" Text="=" CssClass="CalcButtonEqual" OnClick="ButtonEqual_Click" />
                        </td>
                    </tr>
                </table>
                </div>
        </div>
    </div>
</div>
</form>
</body>
</html>

var maxInputLength=20;
功能检查按钮单击(单击值){
var按钮值=点击值;
var inputStr=document.getElementById('inputBox').value;

如果(buttonValue=='查看网页源代码,我发现您已禁用了
文本框。如果控件已禁用
则无法编辑,并且在提交表单时其内容将被排除。因此,您的文本框将不禁用(完全删除
禁用
属性),而将其设置为只读(
readonly='true'
)。

查看您的网页源代码时,我发现您已禁用了
文本框。如果控件已禁用
则无法编辑,并且在提交表单时将其内容排除在外。因此,不要禁用它(完全删除
禁用
属性)您的文本框将其设置为只读(
readonly='true'
)。

回发时,ReadOnly属性设置为true的TextBox控件的文本值将发送到服务器,但服务器不对只读文本框进行处理。这可防止恶意用户更改只读文本值。除非由服务器端代码修改

您正在“操纵”客户端脚本中的值(而不是服务器代码中的值-假设以上是所有代码)。保留
文本框的原始值(空)

如果通过删除
ReadOnly
属性进行测试(或将其设置为
False
),代码将正常工作,您将看到设置的效果


更新: …我需要怎样做才能让用户不能使用键盘输入任何内容?让他们必须使用按钮

除非您有/有理由对该输入字段使用服务器端控件,否则带有
只读的标准HTML输入字段应该可以工作

然后,您将从请求中的标准POST(在一天结束时,WebForms仍然是HTTP POST)而不是ASP.Net控件中获取它的值

简单的例子: 而不是服务器控制:

<asp:TextBox runat="server" CssClass="inputBox" ReadOnly="true" ViewStateMode="Enabled" ID="inputBox"></asp:TextBox>
嗯…

回发时,ReadOnly属性设置为true的TextBox控件的文本值将发送到服务器,但服务器不对只读文本框进行处理。这可防止恶意用户更改只读文本值。除非由服务器端代码修改

您正在“操纵”客户端脚本中的值(而不是服务器代码中的值-假设以上是所有代码)。保留
文本框的原始值(空)

如果通过删除
ReadOnly
属性进行测试(或将其设置为
False
),代码将正常工作,您将看到设置的效果


更新: …我需要怎样做才能让用户不能使用键盘输入任何内容?让他们必须使用按钮

除非您有/有理由对该输入字段使用服务器端控件,否则带有
只读的标准HTML输入字段应该可以工作

然后,您将从请求中的标准POST(在一天结束时,WebForms仍然是HTTP POST)而不是ASP.Net控件中获取它的值

简单的例子: 而不是服务器控制:

<asp:TextBox runat="server" CssClass="inputBox" ReadOnly="true" ViewStateMode="Enabled" ID="inputBox"></asp:TextBox>

Hth…

您根本不需要else语句。inputbox.Text已经分配了该字符串。您能从.aspx文件中提供相关行吗?您是否有可能在页面生命周期中将inputbox.Text设置为string.Empty或“”?(如页面加载)Alexandre在正确的轨道上。我们可以看到你的页面加载方法吗?希望你的页面/文本框控件上启用了视图状态。你可以发布你的aspx页面的内容吗。你根本不需要else语句。inputbox.Text已经分配了该字符串。你能从.aspx文件中提供相关行吗?是否有可能发生此事件页面生命周期您正在将inputBox.Text设置为string.Empty或“”?(如页面加载)Alexandre在正确的轨道上。我们能看到你的页面加载方法吗?希望你的页面/文本框控件上启用了视图状态。你能发布你的aspx页面的内容吗。我将其更改为只读,但在提交后仍不保留其值。我还确保了视图状态已启用。我将其更改为只读,但仍不保留其值s值。我还确保视图状态已启用。Ty有效。那么,我需要如何使其用户无法使用键盘输入任何内容?使其用户必须使用有效的按钮。那么,我需要如何使其用户无法使用键盘输入任何内容?使其用户必须使用键盘输入任何内容使用按钮
protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        string _html = Request["inputBox"]; //here it is

        //do whatever...

    }
}