Это хак, но, похоже, работает.
Мне нужен был только 1 AJAX обработчик записей в моем случае, поэтому я отредактировал data-ajax = "true / false", используя JQuery событие нажатия кнопки, которое позволило кнопке (не требующей AJAX) публиковать сообщения с ее обработчиком.
<form method="post" id="form" data-ajax-method="post" data-ajax-update="#panel">
<input type="hidden" value="@Model.Options.Count()" name="optionCount" />
<input type="hidden" value="@Model.Product.Name" name="product" />
<input type="hidden" value="@Model.Product.ProductId" name="productId" />
<input type="hidden" value="@Model.Headings" name="headings" />
<input type="hidden" value="@Model.HeadingsString" name="headingsString" />
<input type="hidden" value="@Model.Price" name="price" />
@foreach (var item in Model.Headings.Select((value, index) => new { value, index }))
{
<div class="form-group">
<label class="control-label" id="headingA">@item.value</label>
@foreach (var option in Model.Options.Select((value, index) => new { value, index }))
{
if (item.index == option.index)
{
<select class="form-control" name="@item.index" asp-items="option.value"></select>
}
}
</div>
}
<p>
<strong>Price:</strong>
<div id="panel">
<label id="price">@Model.Price</label>
</div>
</p>
<button id="buttonAdd" type="submit" class="btn btn-outline-primary">Calculate</button>
<button id="buttonRemove" class="btn btn-outline-primary" asp-page-handler="Cart">Add To Cart</button>
</form>
JQuery
<script>
$(document).ready(function () {
$("#buttonAdd").click(function () {
$("#form").attr("data-ajax", "true");
});
});
$(document).ready(function () {
$("#buttonRemove").click(function () {
$("#form").attr("data-ajax", "false");
});
});