Yes, I have other overwritten methods and it works OK.
This case is with new functionality added by plugin.
In the FORM of the order detail there are several buttons that trigger the submit for update(post) the order.
The difference is who triggers the submit
IMGI try to do the same with the Plugin Controller
PlugInController
[HttpPost, ActionName("Edit")]
[FormValueRequired("invoiceorder")]
public virtual IActionResult InvoiceOrder(int id)
{
...
}
DependencyRegistrar
public void Register(ContainerBuilder builder, ITypeFinder typeFinder, NopConfig config)
{
...
builder.RegisterType<InvoiceOrderController>().As<OrderController>();
}
The View
@model CustomOrderModel
@using Nop.Core.Domain.Orders;
@using Nop.Services
@using Nop.Plugin.Invoice.Domain;
<script>
$(document).ready(function () {
});
</script>
<div class="panel-body">
<div class="panel panel-default sub-panel">
<div class="panel-body">
<div class="form-group">
<div class="col-md-3">
<nop-label asp-for="OrderInvoiceStatus" />
</div>
<div class="col-md-9">
<div class="input-group input-group-short">
<div class="input-group-text">
<strong>
<div class="form-text-row">@Model.OrderInvoiceStatus</div>
</strong>
</div>
<div class="input-group-btn">
@if (Model.OrderInvoiceStatusId == (int)InvoiceStatus.Invoiced)
{
<button type="submit" name="cancelinvoiceorder" id="cancelinvoiceorder" class="btn bg-red" style="margin-right: 3px;">
@T("Plugins.Invoice.Order.Invoice.Status.Cancel")
</button>
<nop-action-confirmation asp-button-id="cancelinvoiceorder" />
}
else if (Model.OrderInvoiceStatusId == (int)InvoiceStatus.Pending)
{
<button type="submit" id="invoiceorder" class="btn bg-teal" style="margin-right: 3px;" name="invoiceorder">
@T("Plugins.Invoice.Order.Invoice.Status.Invoice")
</button>
<nop-action-confirmation asp-button-id="invoiceorder" />
}
else if (Model.OrderInvoiceStatusId == (int)InvoiceStatus.Error)
{
<button type="submit" name="reinvoiceorder" id="reinvoiceorder" class="btn bg-teal" style="margin-right: 3px;">
@T("Plugins.Invoice.Order.Invoice.Status.ReInvoice")
</button>
<nop-action-confirmation asp-button-id="reinvoiceorder" />
}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
from what I see the problem is between the FormValueRequired and the ParameterBasedOnFormNameAndValueAttribute filter, because the filter does not understand the FormValueRequired attribute in plugin controller.
But I don't know how to fix it. maybe copy the filter into the plugin