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

如何在img的src调用控制器方法时正确传递bool类型参数

解决方案

你之前的尝试不生效主要有3个核心原因:

  1. 括号传参GetImage(true)不符合HTTP URL的传参规范,ASP.NET路由无法识别,会被当做无效路径处理。
  2. 路由片段传参GetImage/true不匹配默认路由规则:ASP.NET默认路由配置的第三个路径片段对应id参数,你传递的true会被赋值给id而非force,因此force会始终使用默认值false。
  3. 动态修改的JS代码存在选择器错误:$("myimage")是选择<myimage>标签,你要选择id为myimage的元素需要用id选择器$("#myimage")。

正确传参方案

方案1:查询字符串传参(最通用,无需修改路由)

这是最简单的方案,不需要调整路由配置,只需要两处调整:

  1. (可选,针对ASP.NET Core ApiController场景)给Action的force参数添加[FromQuery]特性,明确指定参数从查询字符串读取:
public async Task<ActionResult> GetImage([FromQuery] bool force = false)
{
   if (force)
   {
      // 原有逻辑
      return val;
   } else {
      return null;
   }
}
  1. img标签的src直接用查询字符串传参即可:
<img id="myimage" src="/mycontroller/GetImage?force=true" title="my image" />

如果要动态修改src,正确的JS写法为:

$(document).ready(function () {
  $("#myimage")[0].src = "/mycontroller/GetImage?force=true";
});

方案2:路由片段传参

如果你想用/mycontroller/GetImage/true的格式传参,只需要给Action添加自定义路由特性即可:

[HttpGet]
[Route("mycontroller/GetImage/{force:bool}")] // 加bool类型约束避免无效值
public async Task<ActionResult> GetImage(bool force = false)
{
   // 原有逻辑
}

配置完成后<img id="myimage" src="/mycontroller/GetImage/true" title="my image" />就可以正常传递参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:54:05