В моем приложении 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
возвращает значение, разделенное запятыми, когда существует несколько текстовых полей с одинаковыми именами, поскольку я различаю текстовые поля только с разными идентификаторами.
Проблема заключается в том, что администратор вводит пользовательские комментарии, которыеимеет запятую (,) в этом комментарии, тогда значение формы _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"
Hoмы можем справиться со сценарием, как этот.