c# - handle multiple controls with same name in form collection -


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