C# 使用c将文本框中的字符串值转换为int#

C# 使用c将文本框中的字符串值转换为int#,c#,asp.net,C#,Asp.net,我有一个文本框,用户可以把是或否,一旦他们作出选择,然后我写一个表。但在将值写入表之前,我想更改它,因为该字段只接受1或0。我想对代码进行如下更改: 如果是,则将其更改为1 如果为否,则将其更改为0 一旦它被改变了,我将接受新的变量并将其插入到我的表中。这是我的密码: string myvalue = ((TextBox)DV_Port.FindControl("txtmyvalue")).Text.ToString(); sqlcmd.CommandText = "INSERT INTO

我有一个文本框,用户可以把是或否,一旦他们作出选择,然后我写一个表。但在将值写入表之前,我想更改它,因为该字段只接受1或0。我想对代码进行如下更改: 如果是,则将其更改为1 如果为否,则将其更改为0 一旦它被改变了,我将接受新的变量并将其插入到我的表中。这是我的密码:

string myvalue = ((TextBox)DV_Port.FindControl("txtmyvalue")).Text.ToString();

 sqlcmd.CommandText = "INSERT INTO MyTable(myvalue) VALUES(@myvalue)";                 
                    sqlcmd.Parameters.Clear();
                    sqlcmd.Parameters.Add("@myvalue", SqlDbType.VarChar).Value = ServerName;

要将是/否转换为布尔值,可以使用以下单行:

bool result = (myString == "yes") ? true : false;

如果数据库列只接受1或1(一个位),那么应该使用相应的UI元素,如复选框或单选按钮

但是,如果您必须使用文本框(无论出于何种原因),并且需要明确检查“是”和“否”,而不是“是”和“是”以外的任何内容:

bool valueIsTrue = false;
string myvalue = ((TextBox)DV_Port.FindControl("txtmyvalue")).Text;
if (myValue.ToLower() == "yes")
   valueIsTrue = true;
else if (myValue.ToLower() == "no")
   valueIsTrue = false
例如,如果使用复选框,您只需执行以下操作:

bool value = ((CheckBox)DV_Port.FindControl("chkMyValue")).Checked;

首先,如果您可以更改代码,请使用复选框。单选按钮甚至两项组合框更为可取。但是输入是/否?我不太友好

要回答您的问题,您应该使用以下选项:

int myvalue = ((TextBox)DV_Port.FindControl("txtmyvalue")).Text.Equals("Yes", StringComparison.OrdinalIgnoreCase) ? 1 : 0;
差不多

string myvalue = ((TextBox)DV_Port.FindControl("txtmyvalue")).Text;
sqlcmd.CommandText = "INSERT INTO MyTable(myvalue) VALUES(@myvalue)";                 
                    sqlcmd.Parameters.Add("@myvalue", SqlDbType.Bit, myValue == "Yes");

请注意这些扭曲的红线,VisualStudio团队为您投入了大量精力。

正如上面的评论所指出的,复选框最适合这种输入。要求用户键入“是”或“否”都很好,但如果用户键入“可能”,您如何处理?此外,您必须说明“是”(大写)的计算结果与“是”(小写)的计算结果不同,等等

如果你除了使用文本框之外别无选择,那么下面的方法应该可以做到,但对于你更大的问题来说,这是一个糟糕的解决方案

string myvalue = ((TextBox)DV_Port.FindControl("txtmyvalue")).Text;

if (myvalue.Equals("YES", StringComparison.OrdinalIgnoreCase))
{
    //Change to 1
}
else if (myvalue.Equals("NO", StringComparison.OrdinalIgnoreCase))
{
    //Change to 0
}
else
{
    //You should probably tell the user that their input is in an incorrect
    //format here.
}

你不需要这样做:
Text.ToString()
因为
Text
已经是字符串了。
Text
已经是字符串了,你不需要使用它。为什么不使用复选框呢。这很简单……你试过什么了?问题是,他在寻找“是”或“否”,而不一定是“是”或其他任何东西。