C# 通过表单过帐的对象已更改,其id设置为不同的id
当我发布表单时,车辆id设置正确,但在我的名为Order的对象中,所有属性都为空,id设置为车辆id。 对不起,我解释得不好,但我不知道该如何形容 当我调试GET方法和view时,一切都很好,但当涉及POST方法时,我将鼠标悬停在方法参数上方时,C# 通过表单过帐的对象已更改,其id设置为不同的id,c#,html,asp.net,asp.net-core,C#,Html,Asp.net,Asp.net Core,当我发布表单时,车辆id设置正确,但在我的名为Order的对象中,所有属性都为空,id设置为车辆id。 对不起,我解释得不好,但我不知道该如何形容 当我调试GET方法和view时,一切都很好,但当涉及POST方法时,我将鼠标悬停在方法参数上方时,Order selected.id已经与int id 这是我的密码: 查看模型: public class AssignOrderViewModel { public Vehicle Vehicle { get; set; } publi
Order selected.id
已经与int id
这是我的密码:
查看模型:
public class AssignOrderViewModel
{
public Vehicle Vehicle { get; set; }
public List<Order> OrderList { get; set; }
public Order SelectedOrder { get; set; }
}
public class Order
{
public int Id { get; set; }
public Address PickUpAddress { get; set; }
public Address DropOffAddress { get; set; }
public DateTime PickUpTime { get; set; }
public DateTime DropOffTime { get; set; }
public OrderState OrderState { get; set; }
public List<Vehicle> AssignedVehicles { get; set; }
public List<Cargo> Cargo { get; set; }
}
public async Task<IActionResult> AssignOrder(int? id, int? selectedOrderId)
{
if (id == null)
{
return NotFound();
}
var vehicle = await _context.Vehicles
.Include(v => v.LoadingSpace)
.Include(v => v.Position)
.FirstOrDefaultAsync(m => m.Id == id);
if (vehicle == null)
{
return NotFound();
}
var orderList = new List<Order>(_context.Orders.Include(o => o.PickUpAddress).Include(o => o.DropOffAddress).Include(o => o.Cargo).Include(o => o.AssignedVehicles).Include("Cargo.CargoUnit"));
Order selectedOrder = null;
if (selectedOrderId != null)
selectedOrder = orderList.Where(o => o.Id == selectedOrderId).FirstOrDefault();
AssignOrderViewModel assignOrderViewModel = new AssignOrderViewModel
{
Vehicle = vehicle,
OrderList = orderList,
SelectedOrder = selectedOrder
};
return View(assignOrderViewModel);
}
@model TransportationManagementSystem.Models.AssignOrderViewModel
订单选择:
它工作正常,发送get并刷新页面,选中的顺序突出显示
@foreach (var order in Model.OrderList)
{
<a class="text-body order-element" asp-action="AssignOrder" asp-route-selectedOrderId="@order.Id">
<div class="card my-3">
<div class="card-body order-element
@if (Model.SelectedOrder != null)
{
@(order.Id == Model.SelectedOrder.Id ? "selected-order" : "")
} ">
...
@foreach(Model.OrderList中的变量顺序)
{
...
发帖形式:我认为这里有问题
<form asp-action="AssignOrder">
<input type="hidden" asp-for="Vehicle.Id" />
<input type="hidden" asp-for="SelectedOrder" />
<button type="submit" class="btn btn-primary mt-2">Assign</button>
</form>
...
分配
...
我尝试用车辆删除输入。Id
,Id仍然为车辆设置,订单Id仍然设置为车辆Id
我也试过:
,但还是不起作用
我做错了什么?1.你如何提交表单?你上面的
是由GET
提交的,而不是POST
。2.另外,字段名不正确。请将它们更改为我已经放弃了。我只是传递int id
和int selectedOrderId
。我想问题是这两个属性都不正确这些证书的名称分别为Id.Id和SelectedOrder。我还有method=“post”
。
<form asp-action="AssignOrder">
<input type="hidden" asp-for="Vehicle.Id" />
<input type="hidden" asp-for="SelectedOrder" />
<button type="submit" class="btn btn-primary mt-2">Assign</button>
</form>
...