-1

这是一个简单的查询,总是抛出以下异常:

无法将“System.Decimal”类型的对象转换为“System.String”类型。

代码:

public ActionResult Search(SearchModel model)
{
    var vendorList = db.Vendors.Where(v => v.IssueAmount == model.IssueAmount)
                               .ToList();            

    if (vendorList != null && vendorList.Count > 1) 
       return View("SearchResults", vendorList);
    else if (vendorList != null && vendorList.Count == 1)
       return View("Details", vendorList[0]);
    else 
        return View();
}

IssueAmount是一个可以为空的小数,如果我用我的任何字符串字段尝试这个,它会起作用。

编辑:谢谢大家的回复。怀疑这是一个愚蠢的错误:结果证明我的一个模型上的验证是引发异常的东西。我认为这是有效的:

    [DisplayName("Issue Amount")]
    [StringLength(13)]
    [DataType(DataType.Currency)]
    public decimal? IssueAmount { get; set; }

如果我删除 StringLength 验证器,它会很好地单击。

4

3 回答 3

0

尝试IssueAmount在您的SearchModel班级中更改为Decimal

于 2013-09-04T16:26:03.763 回答
0

它看起来像v.IssueAmount或者model.IssueAmount是一个字符串。要修复它,您很可能也需要制作string一个decimal?

于 2013-09-04T16:26:27.640 回答
0

尝试像这样进行查询:

var vendors = db.Vendors
                .Where(v => v.IssueAmount.HasValue && 
                            v.IssueAmount == model.IssueAmount);
于 2013-09-04T16:32:45.943 回答