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

ASP.NET Core MVC:实现保存、保存并新建及取消功能的技术咨询

解决ASP.NET Core MVC中多提交按钮的逻辑处理问题

没问题,咱们一步步搞定这个多提交按钮的逻辑!你目前的代码已经有了基础,但还需要两个关键修改:给按钮添加name属性,以及在控制器中根据按钮值判断跳转方向。

第一步:修改视图,给提交按钮添加name属性

表单提交时,只有被点击的<button>的name和value会被发送到服务器,所以你需要给两个提交按钮设置相同的name(比如submitAction),这样控制器才能识别是哪个按钮被触发了:

<form asp-action="CreatePost">
  <div class="row g-3">
    <div class="form-group col-sm-6">
      <label asp-for="Profile" class="control-label"></label>
      <input asp-for="Profile" class="form-control" />
      <span asp-validation-for="Profile" class="text-danger"></span>
    </div>
  </div>
  <div class="d-flex flex-row justify-content-center">
    <!-- 添加name="submitAction" -->
    <button type="submit" name="submitAction" value="Save" class="w-25 btn btn-primary btn-lg me-5">Save</button>
    <button type="submit" name="submitAction" value="SaveNew" class="w-25 btn btn-primary btn-lg me-5">Save+New</button>
    <a class="w-25 btn btn-secondary btn-lg me-5" asp-action="Index">Cancel</a>
  </div>
</form>

第二步:更新控制器,处理按钮逻辑

在控制器的CreatePost方法中,添加一个参数来接收按钮的value,然后根据不同的值执行对应的操作。另外,强烈建议添加模型验证,确保表单数据合法后再保存:

[HttpPost]
public IActionResult CreatePost(Profile obj, [FromForm] string submitAction)
{
    // 先验证模型是否合法(比如Profile是否为空)
    if (ModelState.IsValid)
    {
        _db.UserProfiles.Add(obj);
        _db.SaveChanges();

        // 根据按钮值判断跳转方向
        if (submitAction == "SaveNew")
        {
            // 保存后返回创建页面,继续新建
            return RedirectToAction("Create");
        }
        else
        {
            // 保存后返回列表页
            return RedirectToAction("Index");
        }
    }

    // 如果模型验证失败,返回创建页面并显示错误信息
    return View("Create", obj);
}

补充说明

  • [FromForm]特性:确保参数从表单数据中绑定,避免模型绑定的歧义(比如如果你的Profile模型刚好有同名属性的话)。
  • 模型验证:如果用户没有填写Profile(因为你加了[Required]特性),ModelState.IsValid会返回false,此时页面会显示你视图中定义的验证错误信息,提升用户体验。
  • 取消按钮:你的取消按钮已经是<a>标签跳转到Index,这个逻辑是对的,不需要修改。

这样修改后,点击「Save」就会保存并返回列表页,点击「Save+New」会保存后回到创建页面,完美实现你的需求!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 21:57:32