2011-10-25 16 views
0

ボタンのonclickイベントで部分ビュー(tr)のテーブルを追加しようとしています。ここで剃刀に部分的なビューを動的に追加する

はボタンです:ここでは

<input id="AddRow" type="button" value="Add Row" onclick="AddRowDynamic();" />

はアクションメソッド

function AddRowDynamic() { 
    $('#EntryTable tr:last').after('@{Html.RenderPartial("WeeklyResourceAllocationPerProject");}'); 
} 

されており、ここでは部分図である。

<tr> 
     @using (Html.BeginForm()) { 
      @Html.ValidationSummary(true) 
      <td> 
       @Html.EditorFor(model => model.ProjectId) 
      </td> 

      <td class="AllocationEntry"> 
       @Html.EditorFor(model => model.Saturday) 
      </td> 
       ... 
       ... 
    } 
    </tr> 

しかし、ジャバスクリプトがエラーを示しています:

Webページエラーの詳細

Webページエラーの詳細

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; GTB7.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET4.0C; .NET4.0E) 
Timestamp: Tue, 25 Oct 2011 04:09:19 UTC 


Message: Unterminated string constant 
Line: 45 
Char: 39 
Code: 0 
URI: http://localhost:65180/ 

ここでエラーが発生しているページのソースです:

function AddRowDynamic() { 
     $('#EntryTable tr:last').after('<tr>  ------------>Line 45 
<form action="/" method="post">  <td> 

は、問題を解決するためにどのように任意のアイデア?

答えて

2

PartialViewからレンダリングするのではなく、Ajax Postで部分的な情報を取得する必要があります。

は、この方法を使用することにより、あなたのモデルも更新され、サーバーにコールバックせずに行を追加したい場合は、あなたのコントローラ

+0

申し訳ありませんが、私は遅く、私はあなたに同意しています。 – Mohayemin

1

で情報を得ることができるようになり、その後、あなたはあなたをレンダリングする必要があります隠しdivの追加の行テンプレート。次に、あなたのテーブルに追加するために、あなたの隠されたdivからhtmlを選択することができます。下部に以下を追加し、あなたのビューを変更します。

<div display="none" id="ExtraRowHtml"> 
    @Html.RenderPartial("WeeklyResourceAllocationPerProject") 
</div> 

次に、そのようなあなたの機能を変更します。

function AddRowDynamic() {  
    $('#EntryTable tr:last').after($("#ExtraRowHtml").html()); 
} 
関連する問題