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

ASP.NET MVC中Edit Action调用后未渲染Edit.cshtml视图问题咨询

问题原因
  • 核心原因:你通过AJAX发起Edit请求后,服务端虽然正确返回了Edit视图的HTML代码,但你的JS代码没有对请求成功的返回结果做任何处理,AJAX属于后台异步请求,浏览器不会自动加载、渲染这段返回的HTML,所以页面没有任何变化。这也正好对应了你提到的Add功能正常、Edit功能失效的差异:Add功能是普通的页面跳转/表单提交,浏览器会自动处理服务端返回的视图,Edit是AJAX触发的请求,需要手动处理返回结果。
  • 附加问题1:你的AJAX请求设置了contentType: "application/json",但你没有传递任何JSON格式的请求体,Id是直接拼接在URL里的,属于不规范写法,极端场景下可能出现参数绑定失败的问题。
  • 附加问题2:获取编辑页面属于查询类操作,按规范应该用GET请求而非POST请求,你给Edit Action加了[HttpPost]特性,也不符合常规的页面跳转逻辑。
解决方案

根据你的业务需求可以选择两种方案:

方案1:直接页面跳转(和Add逻辑保持一致,实现最简单)

  1. 先修改控制器的Edit方法,把[HttpPost]特性移除(默认就是GET请求,也可以显式标注[HttpGet]):
// 移除[HttpPost],或替换为[HttpGet]
public IActionResult Edit(int Id)
{
    try
    {
        var jurisdictionId = _user.Current().JurisdictionId;
        OrganizationType ot = new OrganizationType();
        ot.Id = Id;
        ot.OrganizationName = _electedOfficials.getOrgTypeName(jurisdictionId, Id);

        return View(ot);
    }
    catch (Exception e)
    {
        _logger?.LogCritical(new EventId(101, "CAdminOrganizationType"), e, $"Error when loading Edit Orginization Type View");
        throw;
    }
}
  1. 修改前端触发逻辑,不需要AJAX,两种方式可选:
  • 直接把表格内的Edit链接改成普通a标签:
<a href="/CAdminOrganizationType/Edit/@你的行Id变量" class="你的样式类">编辑</a>
  • 如果一定要用JS函数触发,改成直接跳转页面即可:
function Edit(id) {
    window.location.href = '/CAdminOrganizationType/Edit/' + id;
}

方案2:保留AJAX,局部渲染编辑视图(适合不需要跳转页面的场景,比如弹框显示编辑表单)

如果你的需求是不跳转当前页面,局部加载编辑视图,就需要手动处理AJAX的返回结果:

  1. 同样先把控制器的Edit方法改成支持GET请求,调整逻辑同上。
  2. 修改JS代码,增加成功回调处理返回的HTML:
function Edit(id) {
    var url = '/CAdminOrganizationType/Edit/' + id
    $.ajax({
        type: "GET",
        url: url,
        success: function(html) {
            // 把返回的视图HTML插入到你页面预留的容器中,比如弹框、指定区块
            // 示例:假设页面存在id为editFormBox的容器
            $('#editFormBox').html(html);
            // 如果用弹框组件,这里可以手动调起弹框显示
        }
    }).fail(function () {
        magalert.communicationError();
    });
}

注意:如果用局部加载的方式,Edit.cshtml里的@section scripts代码块不会自动执行,需要把对应的JS逻辑直接写在Edit视图的主内容区,或者在success回调里手动触发执行。

另外注意Edit视图里的提交按钮文字目前是Create Organization Type,可以根据业务改成更新类的文案,避免混淆。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:15:05