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

ASP.NET控制器向视图传数据时遇到CS0266报错如何解决?

错误原因

实体类中的Price字段是可空双精度类型double?,这类字段既可以存储正常的double数值,也可以存储null值,C#不支持可空类型到非空double类型的隐式转换,因此触发CS0266报错。

修复方案

可根据实际业务需求选择以下任意方案:

方案1:设置空值默认值

如果允许Price为空,空值时使用指定默认值(例如0),可调用GetValueOrDefault()方法:

public JsonResult GetItemCode(string Code)
{
    double Category = objFatchXEntities.ItemCardUAE.Single(s => s.Code == Code).Price.GetValueOrDefault(0);
    
    return Json(Category, JsonRequestBehavior.AllowGet);
}

若不传参数,GetValueOrDefault()会自动返回对应值类型的默认值,double类型的默认值为0。

方案2:强制转换(仅适用Price一定不为空的场景)

如果你可以确认对应数据的Price字段绝对不会为空,可以直接强制转换或者读取可空类型的Value属性:

public JsonResult GetItemCode(string Code)
{
    // 写法1:强制类型转换
    double Category = (double)objFatchXEntities.ItemCardUAE.Single(s => s.Code == Code).Price;
    // 写法2:读取Value属性
    // double Category = objFatchXEntities.ItemCardUAE.Single(s => s.Code == Code).Price.Value;
    
    return Json(Category, JsonRequestBehavior.AllowGet);
}

注意:如果实际运行时Price为null,这两种写法都会抛出运行时异常,使用前必须确保数据不存在空值。

方案3:保留可空类型

如果业务需要保留null值,直接把接收变量的类型改为double?即可:

public JsonResult GetItemCode(string Code)
{
    double? Category = objFatchXEntities.ItemCardUAE.Single(s => s.Code == Code).Price;
    
    return Json(Category, JsonRequestBehavior.AllowGet);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 14:15:02