i have form in asp.net mvc(c#) application handles dynamic controls.
on button click "add row", add row dynamically existing table as:
$('#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); }); then admin adds username , comments , submits it.
on submit, handling in controller's action as:
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(); } from above code, _frmusercomments returns comma separated value when there more 1 textbox same name differentiating textboxes different ids.
the problem when admin enters usercomments has comma(,) within comment, form value _frmusercomments has comma separated value , gives invalid data list.
when admin enters(case 1) fine:
sam logged on 12/10/2010 david looking enhancement the form values returns:
_frmusernames = "sam,david" _frmusercomments = "logged on 12/10/2010,looking enhancement" when admin enters(case 2) problem causing:
sam logged on 12/10/2010 david logged on 03/01/2011, looking enhancement the form values returns:
_frmusernames = "sam,david" _frmusercomments = "logged on 12/10/2010,logged on 03/01/2011, looking enhancement" how can handle scenario this.
try set dynamic controls name attributes same ids (with index - yours's _userdynid). you'll able iterate through form collection in controller, (using linq):
foreach (var key in form.allkeys.where(k => k.startswith("username"))) { var index = key.replace("username", ""); var username = form[key]; var usercomment = form["usercomments" + index]; }
Comments
Post a Comment