В моей форме есть таблица, и я не хочу, чтобы она отображалась до тех пор, пока не будет нажата ссылка на странице, которая вызовет действие, чтобы получить данные и перенаправить обратно в то же представление, чтобы заполнить таблицу. По сути, как мастер / деталь формы. Я добавил класс css, чтобы скрыть таблицу, но единственный известный мне способ вызова действия - использовать ajax. Я написал код для функции, но она, кажется, работает нормально, но таблица не заполняется, и я не могу понять, почему. Я использую частичное представление для таблицы, которая должна быть заполнена после нажатия на ссылку. Я очень новичок в MVC, поэтому я понятия не имею, что мне не хватает, любая помощь будет оценена.
Это ссылка, используемая в событии jquery click
<td><a id="viewOrder" href="#" data-PONumber-id=@osOrder.PurchaseOrderNumber>View Order</a></td>
Это мой jQuery для вызова действия в контроллере
$(document).ready(function() {
$("#viewOrder").on("click",
function(e) {
var button = $(this);
$.ajax({
type: "GET",
url: '@Url.Action("Details", "Receiving")',
data: { "id": button.attr("data-PONumber-id") },
success: function() {
var orderButton = $(".js-Order");
orderButton.removeClass("invisible");
orderButton.addClass("visible");
}
});
});
});
Это код моего контроллера.
public ActionResult Details(int id)
{
var purchaseOrder = _context.PurchaseOrders.Single(p => p.PurchaseOrderNumber == id);
var viewModel = new ReceivngFormViewModel
{
PO = purchaseOrder.PurchaseOrderNumber,
Vendor = purchaseOrder.Vendor.VendorName,
Contact = purchaseOrder.Vendor.Phone,
OutstandingOrders = _context.PurchaseOrders.Where(od =>
od.Closed == false && !String.IsNullOrEmpty(od.PurchaseOrderNumber.ToString()) &&
od.OrderDate != null).ToList(),
ReceivedOrderDetails = _context.PurchaseOrderDetails
.Where(pod => pod.PurchaseOrderID == purchaseOrder.PurchaseOrderID && (pod.Quantity - pod.ReceiveOrderDetails
.Sum(rod => rod.QuantityReceived)) != 0)
.Select(pod => new ReceivedOrderDetail
{
PurchaseOrderId = pod.PurchaseOrderID,
PurchaseOrderDetailId = pod.PurchaseOrderDetailID,
PartId = pod.PartID,
PartDescription = pod.Part.Description,
QtyOnOrder = pod.Quantity,
QtyOutstanding = pod.ReceiveOrderDetails.Select(rod => rod.QuantityReceived).Any() ?
pod.Quantity - pod.ReceiveOrderDetails.Sum(rod => rod.QuantityReceived) : pod.Quantity
}).ToList()
};
return View("Index", viewModel);
}