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

ASP.NET MVC实现保存编辑后返回原PIF详情页的按钮方案

解决ASP.NET MVC中SAEs保存后返回PIF详情页的问题

核心思路

要实现“保存并返回PIF详情页”,需要让按钮触发表单提交(执行保存逻辑),然后在控制器中根据ProjectID重定向到目标页面,而非单纯跳转。


步骤1:修改SAEs的Create/Edit视图(以Edit.cshtml为例)

确保表单包含ProjectID隐藏字段,同时添加带标识的提交按钮:

@model YourNamespace.Models.SAE

@using (Html.BeginForm("Edit", "SAEs", FormMethod.Post))
{
    @Html.AntiForgeryToken()
    
    <!-- 现有表单字段 -->
    @Html.HiddenFor(m => m.ProjectID) <!-- 隐藏字段传递ProjectID -->
    
    <!-- 保存并返回按钮 -->
    <button type="submit" name="returnToPIF" value="true" class="btn btn-primary">保存并返回PIF详情页</button>
    <!-- 原有保存按钮 -->
    <button type="submit" class="btn btn-default">保存</button>
}

Create视图逻辑一致,需确保ProjectID被正确传入并渲染为隐藏字段。


步骤2:修改SAEs控制器的HttpPost Edit方法

保存完成后,判断是否触发“返回PIF”的提交,再重定向到PIF详情页:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(SAE model, bool returnToPIF = false)
{
    if (ModelState.IsValid)
    {
        // 执行保存逻辑
        db.Entry(model).State = EntityState.Modified;
        db.SaveChanges();
        
        // 判断是否需要返回PIF详情页
        if (returnToPIF && model.ProjectID > 0)
        {
            return RedirectToAction("Details", "PIF", new { id = model.ProjectID });
        }
        
        // 默认跳转至SAEs列表页
        return RedirectToAction("Index");
    }
    
    // 验证失败返回原视图
    return View(model);
}

步骤3:适配Create方法(同理)

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(SAE model, bool returnToPIF = false)
{
    if (ModelState.IsValid)
    {
        db.SAEs.Add(model);
        db.SaveChanges();
        
        if (returnToPIF && model.ProjectID > 0)
        {
            return RedirectToAction("Details", "PIF", new { id = model.ProjectID });
        }
        
        return RedirectToAction("Index");
    }
    return View(model);
}

步骤4:确保从PIF详情页跳转时传递ProjectID

在PIF的Details视图中,跳转至SAEs创建/编辑页的链接需携带ProjectID:

<!-- 创建SAE的链接 -->
@Html.ActionLink("新建SAE条目", "Create", "SAEs", new { projectID = Model.ProjectID }, null)

<!-- 编辑SAE的链接(假设当前PIF关联的SAE有Id) -->
@Html.ActionLink("编辑SAE条目", "Edit", "SAEs", new { id = Model.AssociatedSAE.Id, projectID = Model.ProjectID }, null)

然后在SAEs控制器的HttpGet方法中接收并赋值给模型:

public ActionResult Create(int projectID)
{
    var newSAE = new SAE { ProjectID = projectID };
    return View(newSAE);
}

public ActionResult Edit(int id, int projectID)
{
    var sae = db.SAEs.Find(id);
    if (sae == null)
    {
        return HttpNotFound();
    }
    sae.ProjectID = projectID; // 确保ProjectID被赋值
    return View(sae);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 10:17:04