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

如何在ASP.NET MVC的View中调用Controller中的方法并传递参数

问题原因梳理

你之前尝试的代码是在视图渲染阶段同步调用控制器方法,不符合你「点击按钮后触发传参」的业务需求,而且报错找不到命名空间是因为你没有在视图顶部引入HomeController所属的命名空间,加@using 你的项目名.Controllers就能解决,但这种写法完全不适合你的业务场景,不需要再用。

你现有代码还有三个核心错误:

  • 你的selectOrdena方法标记了[HttpPost],但@Html.ActionLink生成的是GET请求,请求方式不匹配根本访问不到方法
  • 第二个视图里嵌套了两层form标签(外层Html.BeginForm生成了form,内层又手动写了<form>),会导致表单提交逻辑异常
  • Html.BeginForm的控制器名参数写错了,MVC约定控制器名不需要加Controller后缀,应该写Producto而不是ProductoController

推荐实现方案

方案1:AJAX无刷新调用(最符合你的模态框业务场景)

不需要跳转页面,点击添加后直接在后台执行插入逻辑,用户体验更好。

第一步:修改控制器方法

[HttpPost]
// 改成返回JsonResult方便前端接收处理结果
public ActionResult selectOrdena(string id)
{
    try
    {
        client = new FireSharp.FirebaseClient(config);
        FirebaseResponse responseProdu = client.Get("Producto/" + id);
        Producto dataProdu = JsonConvert.DeserializeObject<Producto>(responseProdu.Body);
        // 这里补充你插入新表格的逻辑
        // ...
        return Json(new { success = true, msg = "添加成功" });
    }
    catch (Exception ex)
    {
        return Json(new { success = false, msg = ex.Message });
    }
}

第二步:修改第二个视图的按钮绑定逻辑

把原来的@Html.ActionLink改成带自定义类的按钮,加Ajax绑定:

<!-- 把原来的ActionLink替换成这个按钮 -->
<button type="button" class="btn btn-primary agregar-btn" data-id="@item.idProducto">Agregar</button>

<!-- 页面底部加jQuery脚本 -->
@section Scripts{
<script>
$(".agregar-btn").click(function(){
    var productId = $(this).data("id");
    $.post('@Url.Action("selectOrdena","Producto")', {id: productId}, function(res){
        if(res.success){
            alert(res.msg);
            // 可以在这里写刷新父页面列表、关闭模态框的逻辑
            $('#lista').modal('hide');
        }else{
            alert("添加失败:" + res.msg);
        }
    })
})
</script>
}

同时删除第二个视图里多余的内层<form>标签,修正外层的Html.BeginForm参数即可。

方案2:表单提交跳转(不需要无刷新的场景)

如果你不需要无刷新效果,把selectOrdena的[HttpPost]改成[HttpGet],执行完插入逻辑后返回RedirectToAction("你原来的视图名")跳回之前的页面即可。


内容的提问来源于stack exchange,提问作者Dennis Fernández

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 15:36:05