需要从视图数据中选择最后一个ID

时间:2019-06-14 14:45:45

标签: c# asp.net viewbag viewdata

我有一个包含我的生产订单的ViewData。我正在做的事情是,操作员可以通过选择要处理的生产订单来创建新生产,但是理想的做法是已经显示了上一个创建的生产订单,而不是他必须查看所有选项并选择最后一个一。有人可以帮我吗?

我正在使用ASP-NET C#Razor Pages。

这是我的ViewData

 ViewData["production_order_ID"] = new SelectList(_context.Production_Order, "production_order_ID", "production_order_ID");

这是我的页面

<div class="col-md-2" style="margin-top:10px">
                <label asp-for="Production.production_order_ID" class="control-label">Ordem de Produção:</label>
                <select id="orderList" name="ids" asp-for="Production.production_order_ID" class="form-control" asp-items="ViewBag.production_order_ID" onchange="getSensors(); myFunction(event);"></select>
            </div>

现在在ViewData上显示第一个项目,但是默认情况下我需要显示最后一个。

2 个答案:

答案 0 :(得分:0)

一种方法是使用视图模型:

public class OrdersViewModel
{
    public List<Order> Orders { get; set; }

    public int Selected { get; set; }
}

然后在您的操作方法中创建,填充视图模型并将其传递给视图:

public IActionResult Index()
{
    var orders = new List<Order>
    {
        new Order { OrderId = 1, OrderName = "Order # 1" },
        new Order { OrderId = 2, OrderName = "Order # 2" }
    };

    var viewModel = new OrdersViewModel() {
        Orders = orders,
        Selected = orders.LastOrDefault().OrderId    // get last order
    };

    return View(viewModel);
}

视图:

@model MyWebApplication.Models.OrdersViewModel   // use your namespace

<div class="col-md-2" style="margin-top:10px">
    <label class="control-label">Ordem de Produção:</label>
    <select id="orderList" name="ids" asp-for="@Model.Selected" class="form-control" asp-items="@(new SelectList(Model.Orders, "OrderId", "OrderName"))" onchange="getSensors(); myFunction(event);"></select>
</div>

答案 1 :(得分:0)

所以基本上我只是做了

ViewData["production_order_ID"] = new SelectList(_context.Production_Order.Where(c => c.User.AspNetUser.UserName.Equals(User.Identity.Name)).OrderByDescending(c => c.production_order_ID).ToList(), "production_order_ID", "production_order_ID");

并能很好地满足我的意图。抱歉浪费您的时间,但是非常感谢您的回答。