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

ASP.NET MVC实现多条记录展示、单条编辑功能的问题咨询

解决方案

你的核心实现思路完全符合「无JS实现单条记录提交」的需求:每条记录独立包裹form标签,提交时只会发送当前form内的表单字段,天然只会返回当前被编辑的单条Resource实体,不需要提交全部条目。你现在无法正确获取实体,修复以下几个问题即可正常运行:

1. 确认EditorTemplate存放路径

EditorTemplate必须放在对应视图目录下的EditorTemplates文件夹中,命名要和实体类名完全一致:
如果使用Home控制器的Index视图,推荐路径为:
/Views/Shared/EditorTemplates/Resource.cshtml 或者 /Views/Home/EditorTemplates/Resource.cshtml
模板文件名必须是Resource.cshtml,和实体类名完全匹配,否则@Html.EditorFor(x=>x)不会正确调用你写的模板,会生成错误的表单字段。

2. 优化EditorTemplate代码

将id字段改为隐藏域避免用户修改,补充基础的布局优化:

@addTagHelper "*, Microsoft.AspNetCore.Mvc.TagHelpers"
@model learningMVC.Models.Resource
<div style="margin:15px 0;padding:10px;border:1px solid #eee;">
    <form asp-action="Index" asp-controller="Home" method="post">
        @* id设为隐藏域,用户不需要直接编辑 *@
        <input asp-for="id" type="hidden" />
        <div>
            <label asp-for="title">资源标题</label>
            <input asp-for="title" class="form-control" />
        </div>
        <div style="margin:8px 0;">
            <label asp-for="value">资源值</label>
            <input asp-for="value" class="form-control" />
        </div>
        <input type="submit" value="保存" class="btn btn-primary" />
    </form>
</div>

3. 补充控制器Post逻辑

添加数据验证和保存后的重定向逻辑,避免重复提交:

[HttpPost]
public IActionResult Index(Resource resource)
{
    if (ModelState.IsValid)
    {
        // 此处添加你的业务保存逻辑:根据resource.id更新数据库对应记录
        // 示例:_context.Resources.Update(resource);
        // 示例:_context.SaveChanges();
    }
    // 保存完成后重定向到Get方法,加载最新的全部资源列表
    return RedirectToAction(nameof(Index));
}

原理解释

每个独立form提交时,只会把当前form内部的id、title、value三个字段提交到后端,ASP.NET MVC的模型绑定会自动把这三个字段映射成Resource类型的参数,全程不需要JavaScript参与。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 05:36:06