You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在ASP.NET Core中如何通过ID将Offer数据传递至Order表单?

实现指定ID的Offers数据填充到Order表单只读字段

步骤1:修改Get请求的Order控制器方法

首先要从数据库获取指定ID的Offers数据,初始化Order模型并填充对应的只读字段,再传递给视图。假设使用EF Core,需注入DbContext实例:

private readonly YourDbContext _context;

// 构造函数注入DbContext
public YourController(YourDbContext context)
{
    _context = context;
}

public IActionResult Order(int id)
{
    // 根据ID查询对应Offers数据
    var targetOffer = _context.Offers.Find(id);
    if (targetOffer == null)
    {
        return NotFound(); // 未找到对应Offer时返回404
    }

    // 初始化Order模型,填充只读字段
    var orderModel = new Order
    {
        offer_Name = targetOffer.Offers_name,
        Price = targetOffer.Price
    };

    return View(orderModel);
}

步骤2:修正Order视图的字段映射

注意Order实体类中对应的字段是offer_Name,需修正视图中的asp-for属性,同时保持只读状态:

<input asp-for="FullName" />
<span asp-validation-for="FullName" class="text-danger"></span>

<input asp-for="PhoneNumber" />
<span asp-validation-for="PhoneNumber" class="text-danger"></span>

<input asp-for="Price" readonly />
<input asp-for="offer_Name" readonly />

步骤3:完善Post请求的控制器方法

Post方法接收Order模型,验证通过后保存到数据库:

[HttpPost]
[ValidateAntiForgeryToken] // 建议添加防伪令牌提升安全性
public IActionResult Order(Order order)
{
    if (ModelState.IsValid)
    {
        _context.Orders.Add(order);
        _context.SaveChanges();
        return RedirectToAction(nameof(Index)); // 保存成功后跳转到订单列表或指定页面
    }
    // 验证失败时返回视图,保留用户已输入内容
    return View(order);
}

额外注意事项

  • 确保DbContext中已正确配置Offers和Order的DbSet:
    public DbSet<Offers> Offers { get; set; }
    public DbSet<Order> Orders { get; set; }
    
  • 若需关联订单与对应Offer,可在Order实体类中添加关联字段:
    public int OffersId { get; set; }
    [ForeignKey(nameof(OffersId))]
    public Offers? RelatedOffer { get; set; }
    

内容的提问来源于stack exchange,提问作者عالم ديم

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 16:25:40