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

ASP.NET Core Razor页面点击列表条目后如何填充编辑表单字段值

你要的效果完全可以实现,按以下步骤操作即可:

1. 修改首页编辑按钮,传递对应咖啡id

给编辑链接加路由参数,把当前循环到的咖啡条目id传给后端方法:

<a asp-action="GetCoffeeItem" asp-route-id="@item.Id">Edit</a> 

点击编辑按钮时,对应咖啡的id会自动作为参数传入GetCoffeeItem方法。

2. 后端查询数据并传递到编辑页

如果你用的是Razor Page模式

给编辑页的PageModel添加绑定属性,接收id后查询数据赋值给属性:

public class EditModel : PageModel
{
    private readonly CoffeeItemProvider _provider;
    // 绑定特性支持前后端数据双向传递
    [BindProperty]
    public CoffeeItem CurrentCoffee { get; set; }

    public EditModel(CoffeeItemProvider provider)
    {
        _provider = provider;
    }

    // 处理编辑页的GET请求
    public async Task<IActionResult> OnGetAsync(int id)
    {
        // 注意:你现有GetCoffeeItem返回值是FoodItem,如果CoffeeItem是它的子类,需要做类型转换
        CurrentCoffee = await _provider.GetCoffeeItem(id) as CoffeeItem;
        if (CurrentCoffee == null) return NotFound();
        return Page();
    }

    // 处理编辑表单提交的更新逻辑
    public async Task<IActionResult> OnPostAsync()
    {
        if (!ModelState.IsValid) return Page();
        await _provider.UpdateCoffeeItem(CurrentCoffee.Id, CurrentCoffee);
        return RedirectToPage("Index");
    }
}

如果你用的是MVC模式

修改GetCoffeeItem方法,查询到数据后传给编辑视图:

public async Task<IActionResult> GetCoffeeItem(int id)
{
    var item = await _db.CoffeeItems.FirstOrDefaultAsync(i => i.Id == id);
    if (item == null) return NotFound();
    return View("Edit", item);
}

3. 编辑页表单自动填充值

Razor的asp-for标签助手会自动读取绑定模型的属性值填充输入框,不需要手动写value属性,删掉原有代码里的value=""即可:

<!-- 如果是Razor Page模式,表单写法 -->
<form method="post">
    <div asp-validation-summary="ModelOnly" class="text-danger"></div>
    <input type="hidden" asp-for="CurrentCoffee.Id" />
    <div class="form-group">
        <label asp-for="CurrentCoffee.Name" class="control-label"></label>
        <input asp-for="CurrentCoffee.Name" class="form-control" />
        <span asp-validation-for="CurrentCoffee.Name" class="text-danger"></span>
    </div>
    <!-- 价格、描述等其他字段写法完全一致,对应CurrentCoffee的属性即可 -->
    <button type="submit" class="btn btn-primary">保存修改</button>
</form>

<!-- 如果是MVC模式,表单写法,先给视图加模型声明@model CoffeeItem -->
@model CoffeeItem
<form asp-action="UpdateCoffeeItem" method="post">
    <div asp-validation-summary="ModelOnly" class="text-danger"></div>
    <input type="hidden" asp-for="Id" />
    <div class="form-group">
        <label asp-for="Name" class="control-label"></label>
        <input asp-for="Name" class="form-control" />
        <span asp-validation-for="Name" class="text-danger"></span>
    </div>
    <!-- 其他字段同理 -->
    <button type="submit" class="btn btn-primary">保存修改</button>
</form>

内容的提问来源于stack exchange,提问作者Maria Hussey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:06:03