2011-10-25 60 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> 

但JavaScript是表示错误:

网页错误的详细信息

网页错误的详细信息

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

您应该通过Ajax Post获取您的部分信息,而不是尝试从PartialView中呈现它。

通过使用这种方法,你的模型也将被更新,你将能够获得的信息在你的控制器

+0

对不起我迟到了,我同意你的看法。 – Mohayemin

1

如果您要在不调用回服务器添加行,那么你需要渲染你隐藏div中的额外行模板。然后,您可以从隐藏的div中选择html添加到您的表格中。更改您的视图,在底部加入以下:

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

然后,改变你的功能,像这样:

function AddRowDynamic() {  
    $('#EntryTable tr:last').after($("#ExtraRowHtml").html()); 
}