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

ASP.NET MVC中如何带参数调用返回PartialView的方法?

在ASP.NET MVC中带参数调用返回PartialView的控制器方法

我来帮你理清楚这个问题,你现在的写法其实走错了方向——Html.RenderPartial是直接渲染指定的.cshtml视图文件,不会触发控制器的Action方法,所以你传的ViewDataDictionary根本不会被控制器的参数接收。要实现调用带参数的控制器方法并返回PartialView,得用Html.RenderAction或者Html.Action,具体实现步骤如下:

1. 补全控制器的Action方法

先确保你的控制器方法能正确接收参数并返回PartialView,补全后的代码大概是这样:

public ActionResult GetALLAppoinmentMedicine(int aid)
{
    // 构造SQL参数(补全你的参数定义)
    var idParam = new SqlParameter 
    { 
        ParameterName = "APPOINTMENT_ID", 
        Value = aid 
    };

    // 从数据库获取对应预约ID的药品数据(替换成你的实际数据逻辑)
    var medicineList = db.Database.SqlQuery<HMS.Models.AppointmentViewModel>(
        "EXEC YourStoredProcedureName @APPOINTMENT_ID", 
        idParam
    ).ToList();

    // 返回PartialView并传递模型数据
    return PartialView(medicineList);
}

2. 在视图中调用控制器Action

把原来的Html.RenderPartial替换成Html.RenderAction,它会触发指定控制器的Action方法,并把返回的PartialView渲染到页面上:

@{
    // 参数说明:Action名称、控制器名称、传递的参数对象
    Html.RenderAction("GetALLAppoinmentMedicine", "Appoinment", new { aid = Model.AppoinmentIDP });
}

如果你不想直接输出,而是想把PartialView的内容作为字符串处理(比如赋值给变量),可以用@Html.Action:

@Html.Action("GetALLAppoinmentMedicine", "Appoinment", new { aid = Model.AppoinmentIDP })

注意事项

  • 确保控制器名称正确:如果你的控制器类是AppoinmentController,那么第二个参数要写"Appoinment"(去掉Controller后缀)
  • PartialView的位置:默认情况下,MVC会在~/Views/Appoinment/或~/Views/Shared/目录下找GetALLAppoinmentMedicine.cshtml文件,确保文件存在
  • 参数有效性:如果Model.AppoinmentIDP可能为null,建议把Action的参数改成int? aid,并在方法内处理空值情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:18:18