在剃刀中动态附加局部视图

时间:2011-10-25 04:10:25

标签: jquery razor renderpartial

我试图在按钮的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 个答案:

答案 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());
}