我试图在按钮的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>
知道如何解决问题吗?
答案 0 :(得分:2)
您应该通过Ajax Post获取部分信息,而不是尝试从PartialView渲染它。
通过使用此方法,您的模型也将更新,您将能够获取控制器中的信息
答案 1 :(得分:1)
如果要在不回调服务器的情况下添加行,则需要在隐藏的div中呈现其他行模板。然后,您可以从隐藏的div中选择html以添加到您的表中。更改您的视图,在底部添加以下内容:
<div display="none" id="ExtraRowHtml">
@Html.RenderPartial("WeeklyResourceAllocationPerProject")
</div>
然后,改变你的功能:
function AddRowDynamic() {
$('#EntryTable tr:last').after($("#ExtraRowHtml").html());
}