У меня очень странная проблема при рендеринге частичного представления. На моей странице есть таблица, строки которой отображаются с использованием частичного представления. Вот фрагмент
<td>
<img src="@Url.Content("~/Content/Images/edit_icon.gif")" class="editLine" />
<img src="@Url.Content("~/Content/Images/delete_icon.gif")" class="deleteLine" />
@Html.HiddenFor(model => model.LineId)
</td>
Это хорошо отображается при первой загрузке страницы. Входные теги имеют значение, установленное для идентификатора. Однако когда я выполняю ajax-вызов и возвращаю PartialView из контроллера, это значение всегда равно 0.
Код контроллера:
line.LineId = 12; //whatever the actual value is
return PartialView("Line", line);
И код JQuery
$.ajax({
data: {
Id: id
},
success: function (data, textStatus) {
$('#lines').append(data);
}
Когда я отлаживаюсь и смотрю, я вижу, что данные вернулись как
<input name="lineId" id="lineId" value="0" />
Я отлаживал через ВСЕ, и lineId не равен 0. Затем я отлаживал через само представление, и всякий раз, когда я делал Html.Hidden ("lineId", anyvalueHere), он отображался как 0. Когда я изменил его на Html.Hidden ( "lineId_" + actualId, actualId) это сработало.
Это известное / ожидаемое поведение? Я могу представить, что это не джайвинг с дубликатами. Тем не менее, он прекрасно отрисовывается при загрузке страницы, где я использую точно такой же частичный просмотр. Есть ли волшебный джуджу для вещей на стороне клиента? Я думаю, что нет, поскольку это просто действие контроллера, и оно не знает разницы. Кто-нибудь видел это. Спасибо