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

ASP.NET MVC跨表按Contract_Num筛选报错:int转bool失败如何解决?

解决ASP.NET MVC中跨表搜索的"Cannot implicitly Convert 'int' to 'bool'"错误

这个错误的核心原因是你在控制器的Where条件里写了一个无效的表达式——x => x.contracts.Contract_Num,这里x.contracts.Contract_Num是整数类型,而Where方法需要的是一个返回布尔值(true/false)的判断逻辑,所以编译器会报错无法把int转成bool。

下面是具体的修复步骤:

1. 修正控制器的查询逻辑

你需要把Where条件改成判断输入的Contract_Num和数据库中的值是否匹配的逻辑,同时还要处理输入为空的情况,另外注意不要错误调用ToString()(这会把查询对象转成字符串,而非返回数据集):

//GET: ContractMonth
public ActionResult Index(string Contract_Num)
{
    // 提前关联contracts表,避免视图中访问关联数据时出现延迟加载问题
    var query = _context.ContractMonth.Include(c => c.contracts);

    if (!string.IsNullOrEmpty(Contract_Num))
    {
        // 把输入的字符串转为int,避免类型不匹配报错
        if (int.TryParse(Contract_Num, out int contractNum))
        {
            query = query.Where(x => x.contracts.Contract_Num == contractNum);
        }
    }

    // 把查询结果转为List传给视图
    return View(query.ToList());
}

2. 调整视图的搜索表单参数绑定

你的视图文本框命名是contracts.Contract_Num,但控制器参数是Contract_Num,为了让参数能正确绑定,建议修改文本框的name属性:

<b>Search By:</b> @Html.TextBox("Contract_Num") <text>Contract Number</text> <input type="submit" value="Search" />

3. 修正视图的HTML结构

你的循环里把<tbody>放在了循环内部,每个条目都会生成一个<tbody>,不符合HTML规范,应该把<tbody>放在循环外面,同时补充<thead>让表格结构更完整:

<table>
    <thead>
        <tr>
            <th>Contract Number</th>
            <th>Month</th>
            <th>Rent Amount</th>
            <th>Receipt</th>
            <th>Balance</th>
            <th>Note</th>
            <th>Actions</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model)
        {
            <tr>
                <td>@Html.DisplayFor(modelItem => item.contracts.Contract_Num)</td>
                <td>@Html.DisplayFor(modelItem => item.Monthe)</td>
                <td>@Html.DisplayFor(modelItem => item.contracts.AmountOfRent)</td>
                <td>@Html.DisplayFor(modelItem => item.Receipt)</td>
                <td>@{ var Balance = item.contracts.AmountOfRent - item.Receipt; } @Balance</td>
                <td>@Html.DisplayFor(modelItem => item.Not)</td>
                <td>@Html.ActionLink("تعديل", "Edit", new { id = item.ContractMonth_Id }) | @Html.ActionLink("التفاصيل", "Details", new { id = item.ContractMonth_Id }) | @Html.ActionLink("حذف", "Delete", new { id = item.ContractMonth_Id })</td>
            </tr>
        }
    </tbody>
</table>

做完这些修改后,你的搜索功能就能正常运行,那个类型转换的错误也会消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:45:04