2012-08-03 98 views
0

我有一个表中的项目列表,我正在尝试编辑。如何将项目添加到标记中的集合?

我有一个文件BankAccount.cshtml看起来像:

@model BankAccount 

@Html.HiddenFor(x => x.AccountId, new { @id="accountId" }) 

<table id="transactionTable"> 
    <tbody> 
     @Html.EditorFor(x => x.InboundTransactions) 
    </tbody> 
</table> 
<a id="addTransactionLink">Add</a> 

<script type="text/javascript"> 
    $(document).ready(function() { 

     $('#transferTable').on('click', 'a.removeLink', function (e) { 
      $(this).closest('tr').remove(); 
     }); 

     $('#addTransactionLink').click(function() { 

      var transaction = { 
       TransactionNumber: "234" 
      }; 

       $.post('/BankAccount/AddRow/', transaction, function (data) { 

       $('#transactionTable').append(data); 
      }); 
     }); 
    }); 
</script> 

一个Transaction.cshtml看起来像:

@model Transaction 

    <tr> 
     <td> 
      @Html.EditorFor(x => x.TransactionNumber) 
     </td> 
     <td> 
      <a class="removeLink">Remove</a> 
     </td> 
    </tr> 

因此,这被放在了EditorFor InboundTransactions。

在BankAccountController方法:

[HttpPost] 
     public PartialViewResult AddRow(Transaction transaction) 
     { 
      return PartialView("EditorTemplates/Transaction", transaction); 
     } 

那么,什么是应该发生在单击添加行按钮时,增加了一个新的行。

无论如何,如果我去的网页,我可能已经有两笔交易,然后我添加了一个排它可能看起来像这样的标记:

<tr> 
    <td> 
     <input id="BankAccount_Transactions_0__TransactionNumber" class="text-box single-line" type="text" value="456" name="BankAccount.Transactions[0].TransactionNumber" data-val-required="The TransactionNumber field is required." data-val-number="The field TransactionNumber must be a number." data-val="true"> 
    </td> 
    <td> 
     <a class="removeLink">Remove</a> 
    </td> 
</tr> 

<tr> 
    <td> 
     <input id="BankAccount_Transactions_1__TransactionNumber" class="text-box single-line" type="text" value="456" name="BankAccount.Transactions[1].TransactionNumber" data-val-required="The TransactionNumber field is required." data-val-number="The field TransactionNumber must be a number." data-val="true"> 
    </td> 
    <td> 
     <a class="removeLink">Remove</a> 
    </td> 
</tr> 

<tr> 
    <td> 
    <input id="Transactions" class="text-box single-line" type="text" value="0" name="Transactions"> 
    </td> 
    <td> 
    <a class="removeLink">Remove</a> 
    </td> 
</tr> 

所以,你可以在这里看到一个明显的问题。新添加的行不包含表明它属于BankAccount的事务集合的一部分。

发生回发时,不包括新添加的行。

任何人都知道如何使这项工作?

回答

0

我建议你看看following article来编辑一个可变长度列表。它说明了自定义BeginCollectionItem帮助程序的用法,该程序使用Guids替换具有编号索引的集合。当您开始删除和添加项目时,这也会对您有所帮助,因为您需要重新同步索引。 Guids没有这样的问题。

相关问题