如何包含非NULL文本框中的值
本文关键字:文本 何包含 NULL | 更新日期: 2023-09-27 18:19:31
我有一个方法,可以从文本框中获取值并将其插入数据库。如何仅从已键入文本的文本框中解析值?
例如,如果文本框4、5和6为空,那么我不希望将它们解析为insert方法。
这是我为在数据库中插入一个答案而写的。我如何修改它以只包含那些不为空的文本框?
<div id="answerswer_wrapper">
<div class="answerswer">
<h3 class="new">Answer 1</h3>
<asp:TextBox ID="AnswerBox1" runat="server" CssClass="form" Width="300px"></asp:TextBox>
</div> <!-- end answer -->
<div class="answerswer">
<h3 class="new">Answer 2</h3>
<asp:TextBox ID="AnswerBox2" runat="server" CssClass="form" Width="300px"></asp:TextBox>
</div> <!-- end answer -->
<div class="answerswer">
<h3 class="new">Answer 3</h3>
<asp:TextBox ID="AnswerBox3" runat="server" CssClass="form" Width="300px"></asp:TextBox>
</div> <!-- end answer -->
<div class="answerswer">
<h3 class="new">Answer 4</h3>
<asp:TextBox ID="AnswerBox4" runat="server" CssClass="form" Width="300px"></asp:TextBox>
</div> <!-- end answer -->
<div class="answerswer">
<h3 class="new">Answer 5</h3>
<asp:TextBox ID="AnswerBox5" runat="server" CssClass="form" Width="300px"></asp:TextBox>
</div> <!-- end answer -->
<div class="answerswer">
<h3 class="new">Answer 6</h3>
<asp:TextBox ID="AnswerBox6" runat="server" CssClass="form" Width="300px"></asp:TextBox>
</div> <!-- end answer -->
protected void FinishQnrButton_Click(object sender, EventArgs e)
{
int QuestionnaireId = (int)Session["QuestionnaireID"];
SendData = new OsqarSQL();
int questionId = SendData.InsertQuestions(QuestionName.Text, Int32.Parse(QuestnType.SelectedValue), QuestionnaireId);
int answerId = SendData.InsertAnswer(AnswerBox1.Text, questionId, QuestionnaireId);
Response.Redirect("~/buildq/Confirm_Questionnaire.aspx");
} // End NewQNRButton_Click
public int InsertAnswer(string AnswerTitle, int QuestionID, int QuestionnaireID)
{
int returnValue = 0;
SqlCommand myCommand = new SqlCommand("NewAnswer", _productConn);
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.Parameters.Add(new SqlParameter("@ANSWERTITLE", SqlDbType.NVarChar));
myCommand.Parameters.Add(new SqlParameter("@QUESTION_ID", SqlDbType.Int));
myCommand.Parameters.Add(new SqlParameter("@QUEST_ID", SqlDbType.Int));
myCommand.Parameters.Add("@ANSWER_ID", SqlDbType.Int, 0, "ANSWER_ID");
myCommand.Parameters["@ANSWER_ID"].Direction = ParameterDirection.Output;
myCommand.Parameters[0].Value = AnswerTitle;
myCommand.Parameters[1].Value = QuestionID;
myCommand.Parameters[2].Value = QuestionnaireID;
_productConn.Open();
myCommand.ExecuteNonQuery();
returnValue = (int)myCommand.Parameters["@ANSWER_ID"].Value;
_productConn.Close();
return returnValue;
}
从技术上讲,TextBox.Text
属性永远不会是null
。如果表单中没有值,则该值将为string.Empty
。
你可以用这样的东西测试空字符串:
if (!string.IsNullOrEmpty(AnswerBox1.Text))
int answerId = SendData.InsertAnswer(AnswerBox1.Text, questionId, QuestionnaireId);
请注意,我并不完全确定你的总体目标是什么。也许我错过了什么。听起来就像你在问如何检查每个TextBox
的空值,并对具有非空值的值执行插入。所以我想你会多次做类似的事情。还有其他方法可以做到这一点,您可以将其全部封装在helper方法中,等等。但通常情况下,您只是在测试"根据业务规则不可插入"的值。