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

如何在Razor Pages中无需指定索引绑定对象数组?

Razor Pages如何绑定无索引的对象数组提交数据?

我有一个Razor Pages页面,希望提交一组可在客户端编辑(添加、修改、删除)的对象并实现自动绑定。比起指定数组项索引(如name=Ship.Products[1].ProductId),省略索引的写法(如name=Ship.Products[].ProductId)更便捷,但Razor Pages似乎无法识别这种无索引的数据。

模型

public class EditShipViewModel
{
    public int Id { get; set; }

    [Required]
    [StringLength(80)]
    public string Name { get; set; }

    [StringLength(80)]
    public string Shipper { get; set; }

    [StringLength(80)]
    [DisplayName("Port of Origin")]
    public string PortOfOrigin { get; set; }

    [DisplayName("Is Empty")]
    public bool IsEmpty { get; set; }

    [DisplayName("ETA")]
    public DateTime? Eta { get; set; }
    public DateTime? Arrival { get; set; }
    public DateTime? Departure { get; set; }

    public IEnumerable<EditShipProductViewModel> Products { get; set; }
}

public class EditShipProductViewModel
{
    public int Id { get; set; }
    [DisplayName("Product")]
    public int ProductId { get; set; }
    [DisplayName("Inbound Quantity")]
    public double InboundQuantity { get; set; }
}

页面属性

[BindProperty]
public EditShipViewModel Ship { get; set; }

视图标记代码

<table class="table table-striped">
    <tbody id="ship-products">
        <tr>
            <td>
                <input name="Ship.Products[].Id" type="hidden" value="1">
                <input name="Ship.Products[].ProductId" type="hidden" value="1">
            </td>
            <td>
                <input name="Ship.Products[].InboundQuantity" type="hidden" value="1000">
            </td>
            <td class="text-end">[Edit][Delete]</td>
        </tr>
        <tr>
            <td>
                <input name="Ship.Products[].Id" type="hidden" value="2">
                <input name="Ship.Products[].ProductId" type="hidden" value="2">
            </td>
            <td>
                <input name="Ship.Products[].InboundQuantity" type="hidden" value="2000">
            </td>
            <td class="text-end">[Edit][Delete]</td>
        </tr>
        <tr>
            <td>
                <input name="Ship.Products[].Id" type="hidden" value="3">
                <input name="Ship.Products[].ProductId" type="hidden" value="3">
            </td>
            <td>
                <input name="Ship.Products[].InboundQuantity" type="hidden" value="3000">
            </td>
            <td class="text-end">[Edit][Delete]</td>
        </tr>
    </tbody>
</table>

是否有办法让Razor Pages绑定识别这种标记代码为对象数组?

更新

提交的实际数据格式如下:

  • Ship.Products[].Id=1
  • Ship.Products[].ProductId=1
  • Ship.Products[].InboundQuantity=1000
  • Ship.Products[].Id=2
  • Ship.Products[].ProductId=2
  • Ship.Products[].InboundQuantity=2000
  • Ship.Products[].Id=3
  • Ship.Products[].ProductId=3
  • Ship.Products[].InboundQuantity=3000

内容的提问来源于stack exchange,提问作者Jonathan Wood

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 19:20:29