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

MVC Razor C#中img调用控制器方法时参数CustomerLinkItemCode为null

问题:MVC控制器方法参数始终为null(方法已触发)

在MVC Razor C#项目中,调用控制器的SelectItemImage方法时,方法确实被触发,但参数CustomerLinkItemCode始终为null。

控制器代码

//控制器方法
public ActionResult SelectItemImage(string CustomerLinkItemCode)
{
    //创建模型对象
    ItemImageMaster itemImageMaster = new ItemImageMaster();
    //调用方法从数据库获取图片字节
    itemImageMaster = CustomerItemLinkRepository.SelectItemImage(CustomerLinkItemCode);
    //以文件形式返回字节数据
    return File(itemImageMaster.ItemImageData, "image/png");
}

视图代码

//在Razor视图中调用控制器方法
<img src="/Kart/SelectItemImage/@Model.CustomerItemLinkMaster.CustomerItemLinkDetailsList[i].CustomerLinkItemCode" alt="" height=75 width=60 id="CustomerLinkItemCode" name="CustomerLinkItemCode"/>

原因分析

当前视图使用路由段传递参数(/控制器/方法/参数值)的方式,但MVC默认路由模板({controller}/{action}/{id})只会将最后一段路由值绑定到名为id的参数。你的参数名是CustomerLinkItemCode,和默认路由的参数名不匹配,导致无法自动绑定。


解决方案

方案1:修改参数名匹配默认路由

将控制器方法的参数名改为id,直接匹配默认路由的参数:

public ActionResult SelectItemImage(string id)
{
    ItemImageMaster itemImageMaster = new ItemImageMaster();
    itemImageMaster = CustomerItemLinkRepository.SelectItemImage(id);
    return File(itemImageMaster.ItemImageData, "image/png");
}

方案2:使用查询字符串传递参数

修改视图的img标签,通过查询字符串传递参数,MVC会自动绑定到同名参数:

<img src="/Kart/SelectItemImage?CustomerLinkItemCode=@Model.CustomerItemLinkMaster.CustomerItemLinkDetailsList[i].CustomerLinkItemCode" 
     alt="" height=75 width=60 
     id="CustomerLinkItemCode" name="CustomerLinkItemCode"/>

方案3:添加自定义路由(或使用属性路由)

方式A:配置全局自定义路由

在RouteConfig.cs中添加匹配当前参数名的路由:

routes.MapRoute(
    name: "ItemImageRoute",
    url: "Kart/SelectItemImage/{CustomerLinkItemCode}",
    defaults: new { controller = "Kart", action = "SelectItemImage", CustomerLinkItemCode = UrlParameter.Optional }
);

方式B:使用属性路由

在控制器方法上添加Route特性,并确保项目启用了属性路由(在RouteConfig.cs中添加routes.MapMvcAttributeRoutes();):

[Route("Kart/SelectItemImage/{CustomerLinkItemCode}")]
public ActionResult SelectItemImage(string CustomerLinkItemCode)
{
    // 原代码保持不变
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 01:35:26