2011-04-29 53 views
1

我在我的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" 

我該如何處理這種情況。

回答

0

嘗試設置與ID相同的動態控件名稱屬性(使用索引 - 您的_userDynId)。您可以通過表單收集器遍歷,這樣的事情(使用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]; 
     } 
1

看起來要綁定集合模型。我推薦你這樣做Phil Haack does

相關問題