Динамически добавляем частичный вид в бритве - PullRequest
0 голосов
/ 25 октября 2011

Я пытаюсь добавить таблицу с частичным представлением (то есть 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>

Есть идеи, как решить проблему?

Ответы [ 2 ]

2 голосов
/ 25 октября 2011

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

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

1 голос
/ 25 октября 2011

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

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

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

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