Динамическое добавление частичного представления в бритве

Я пытаюсь добавить таблицу с частичным представлением (которое является tr) в событии onclick кнопки.

Вот кнопка:

<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>

Любая идея, как решить проблему?


person Mohayemin    schedule 25.10.2011    source источник


Ответы (2)


Вы должны получать частичную информацию с помощью Ajax Post, а не пытаться визуализировать ее из PartialView.

Используя этот метод, ваша модель также будет обновлена, и вы сможете получить информацию в своем контроллере.

person muek    schedule 25.10.2011
comment
Извините, что опоздал, я с вами согласен. - person Mohayemin; 28.10.2011

Если вы хотите добавить строки без обратного вызова на сервер, вам нужно отобразить дополнительный шаблон строки в скрытом div. Затем вы можете выбрать html из своего скрытого div, чтобы добавить его в свою таблицу. Измените свой вид, добавив следующее внизу:

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

Затем измените свою функцию следующим образом:

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