asp.net mvc(C#)アプリケーションに、いくつかの動的コントロールを処理するフォームがあります。
[行の追加]ボタンをクリックすると、次のように既存のテーブルに動的に行が追加されます。
$('#btnAddMore').click(function() {
var _userBodyHtml = '';
_userBodyHtml += '<tr><td><input type="text" name="UserName" id="UserName' + _userDynId + '" size="10" /></td>';
_userBodyHtml += '<td><textarea name="UserComments" id="UserComments' + _userDynId + '" cols="60" rows="1"></textarea></td>';
_userBodyHtml += '</tr>';
_userDynId += 1;
$('#UserBody').append(_userBodyHtml);
});
次に、管理者はユーザー名とコメントを追加して送信します。
送信時に、私はコントローラーのアクションでそれを次のように処理しています:
var _frmUserNames = new List<String>(form["UserName"].ToString().Split(','));
var _frmUserComments = new List<String>(form["UserComments"].ToString().Split(','));
if (_frmUserNames.Count > 0 && _frmUserComments.Count > 0)
{
List<UserComments> _userComments = Enumerable.Range(0, _frmUserNames.Count)
.Select(i => new UserComments
{
UserName = _frmUserNames[i],
UserComment = _frmUserComments[i]
}).ToList();
}
上記のコードから、_frmUserComments
IDが異なるテキストボックスのみを区別しているのと同じ名前のテキストボックスが複数ある場合、はコンマ区切りの値を返します。
問題は、管理者がそのコメント内にコンマ(、)を含むユーザーコメントを入力すると、フォーム値_frmUserComments
にコンマ区切り値が含まれ、リストに無効なデータが提供されることです。
管理者が入ったとき(ケース1)これは問題ありません:
Sam Logged on 12/10/2010
David Looking for enhancement
フォームの値は次を返します。
_frmUserNames = "Sam,David"
_frmUserComments = "Logged on 12/10/2010,Looking for enhancement"
管理者が入ったとき(ケース2)、これは問題の原因です:
Sam Logged on 12/10/2010
David Logged on 03/01/2011, Looking for enhancement
フォームの値は次を返します。
_frmUserNames = "Sam,David"
_frmUserComments = "Logged on 12/10/2010,Logged on 03/01/2011, Looking for enhancement"
このようなシナリオをどのように処理できますか。