Вы можете иметь несколько форм на странице.Например, если у вас есть таблица со строками, где вы хотите удалить любую строку, вы создаете форму в ячейке таблицы в этой строке.Таким образом, удаление использует только один идентификатор для действия POST для удаления.
Я предлагаю вам разделить ваши частичные представления на их собственные формы, каждый из которых действует независимо.Единственная проблема заключается в том, что для обновления в одной форме требуется повторное отображение другой.Ваш внешний вид может справиться с этим лучше, чем частичный вид, пытающийся общаться.Очень просто вернуть результаты двух представлений в объекте JSON из действия и назначить HTML каждому соответствующему DIV, имеющему частичное представление
У вас есть два варианта первоначального заполнения вашего частичного.Если у вас есть что-то подобное в вашем главном представлении, при первой загрузке ваши детали HTML отображаются движком RAZOR в div.Это происходит из действия HTTP GET (при условии, что у вас есть отдельные для GET и POST)
<div id="divYourPartial">
@Html.Partial("_Details", Model)
</div>
Код, который я предложил в первом ответе, затем снова заполнит этот DIV, когда пользователь сохранит (POSTS) свои изменения.Вам больше нечего делать.
Вы также можете заполнить div при первой загрузке, используя JavaScript, как в моем первом ответе
<div id="divYourPartial">
</div>
Вам понадобится раздел скриптов, который выполняетзагрузить изначально - если вы не ждете, пока пользователь щелкнет какой-либо элемент и загрузит данные по идентификатору.Если вы хотите захватывать события от потомков, которые загружаются динамически, поместите обработчик событий на фиксированный внешний элемент, в противном случае вы их не поймаете.
@section Scripts
{
<script type="text/javascript">
function LoadData(){
$.ajax({
url: '/YourController/YourAction/' + YourId,
type: "get",
success: function (result) {
$("#divYourPartial").html(result);
}
});
}
$(function () {
// first time page load
LoadData()
$("#divOuter").on("dblclick", function (event) {
// when user double clicks an item, show it for editing
// on an outer div awaiting an event to percolate up from a descendant, the target is not $(this)
var target = $(event.target);
// Your ajax here to load the div
});
});
</script>