Asp.net core Razor Pages复选框在编辑页面中引发错误

Asp.net core Razor Pages复选框在编辑页面中引发错误,asp.net-core,razor,checkbox,Asp.net Core,Razor,Checkbox,我需要一些帮助,在插入复选框值到mssql数据库和检索相同的编辑页面 这是模型课 public class RequestForm{ [Key] public int ID { get; set; } public string OtherCompetitorsChecked { get; set; } public string OtherCompetitorName { get; set; } } 这是

我需要一些帮助,在插入复选框值到mssql数据库和检索相同的编辑页面

这是模型课

    public class RequestForm{
         [Key]
         public int ID { get; set; }
         public string OtherCompetitorsChecked { get; set; }
         public string OtherCompetitorName { get; set; }
    }
这是我的RequestForm.cshtml文件

                   <div class="tr">
                        <div class="td">
                            <input id="ChkOthers" style="margin-left:40px;" asp-for="RequestForm.OtherCompetitorsChecked" type="checkbox" value="Others" /> Others
                            
                        </div>
                        <div class="td">
                            <input id="CompetitorsOthersName" title="Please Fill In Other Competitor Name" asp-for="RequestForm.OtherCompetitorName" type="text" class="form-control-slp" required disabled style="width:50%" />
                        </div>
                    </div>

其他
当选中时,我将复选框值插入数据库,这就是我在模型类中使用字符串数据类型的原因。当我获取数据时,我能够将数据插入数据库,其显示错误如下

InvalidOperationException:的asp的意外表达式结果值“Others”无法将“其他”解析为“System.Boolean”

     public string OtherCompetitorsChecked { get; set; }
有办法解决这个问题吗

InvalidOperationException:意外的表达式结果值“Others” 用于asp for无法将“其他”解析为“System.Boolean”

     public string OtherCompetitorsChecked { get; set; }
此问题涉及已检查的
其他竞争对手
数据类型。
Input
taghelper根据.NET类型设置HTML
type
属性。从下面的列表中,我们可以看到,对于
Input
复选框,.Net类型应该是Bool类型

因此,要解决上述问题,请将
OtherCompetitorsChecked
的数据类型更改为
bool
类型:

public class RequestForm
{
    [Key]
    public int ID { get; set; }
    public bool OtherCompetitorsChecked { get; set; }
    public string OtherCompetitorName { get; set; }
}
然后,在Get或Post方法中,当您设置其值时,它应该是
true
false

    public void OnGet()
    {
        RequestForm = new RequestForm() { 
            ID = 1001, 
            OtherCompetitorName = "AA", 
            OtherCompetitorsChecked = true 
        };
    }
此外,在应用程序中,可能需要使用复选框显示选定项的列表,并使用字符串类型存储选定值。如果是这种情况,您可以尝试使用html
元素来显示项目(不使用),或者使用
标记,然后在Post方法中,通过html元素的name属性获取所选选项的值

代码如下(您可以将复选框值更改为“模型数据”、“模型详细信息”,请参阅):



最后,根据上面的代码,我假设您希望将
CompetitorsOthersName
文本框设置为只读,如果是这种情况,请尝试删除
disabled
属性,并添加
readonly
属性。因为,如果使用
disabled
属性,提交表单后,提交模型的CompetitorsOthersName属性将为空。您可以查看。

Hi@Teena,我可以知道回复是否解决了问题,或者该线程是否有任何更新?如果答案解决了问题,请接受它-请参阅。如果您对我的答复有任何疑问,请随时告诉我。
    public void OnPost(string selectedCompetitorName)
    { 
        if (ModelState.IsValid)
        {
            var data = RequestForm;
        }
    }
<input id="CompetitorsOthersName" title="Please Fill In Other Competitor Name" asp-for="RequestForm.OtherCompetitorName" type="text"
class="form-control-slp" required disabled style="width:50%" />