TextModeがMultiLineに設定されたASPTextBoxがあります。ユーザーがテキストに改行を入れようとすると、vbCrLf文字を保持するのに問題があります。ページ上のボタンが押されると、コントロールからテキストを取得し、String.Trimを使用してテキストをトリミングし、その値をオブジェクトのStringプロパティに割り当てます(これにより、プライベート内部String変数に割り当てられます)オブジェクト上)。次に、オブジェクトはプライベート内部変数から値を取得し、ストアドプロシージャ呼び出しを使用してデータベースにスローします(オブジェクトが挿入されるSPパラメーターはnvarchar(4000)です)。
ASPXページ:
<asp:UpdatePanel ID="UpdatePanel2" runat="server" RenderMode="Inline" UpdateMode="Conditional"
ChildrenAsTriggers="true">
<ContentTemplate>
<!-- some other controls and things -->
<asp:TextBox TextMode="MultiLine" runat="server" ID="txtComments" Width="100%" Height="60px" CssClass="TDTextArea" Style="border: 0px;" MaxLength="2000" />
<!-- some other controls and things -->
</ContentTemplate>
</asp:UpdatePanel>
背後にあるコード:
ProjectRequest.StatusComments = txtComments.Text.Trim
オブジェクトプロパティ:
Protected mStatusComments As String = String.Empty
Property StatusComments() As String
Get
Return mStatusComments.Trim
End Get
Set(ByVal Value As String)
mStatusComments = Value
End Set
End Property
ストアドプロシージャ呼び出し:
Common.RunSP(mDBConnStr, "ProjectStatusUpdate", _
Common.MP("@UID", SqlDbType.NVarChar, 40, mUID), _
Common.MP("@ProjID", SqlDbType.VarChar, 40, mID), _
Common.MP("@StatusID", SqlDbType.Int, 8, mStatusID), _
Common.MP("@Comments", SqlDbType.NVarChar, 4000, mStatusComments), _
Common.MP("@PCTComp", SqlDbType.Int, 4, 0), _
Common.MP("@Type", Common.TDSqlDbType.TinyInt, 1, EntryType))
これが最も奇妙な部分です。コードをデバッグするとき、入力すると
「テスト
テスト」
(引用符なしで)コメントテキストボックスに移動し、[保存]ボタンをクリックし、イミディエイトウィンドウを使用して、ステップスルーするときに変数値を表示します。次のようになります。
?txtComments.Text
"test test"
?txtComments.Text.Trim
"test
test"
?txtComments.Text(4)
"
"c
?txtComments.Text.Trim()(4)
"
"c
誰かがここで何が起こっているのかについての手がかりを持っていますか?