Asp.net core Razor Pages复选框在编辑页面中引发错误
我需要一些帮助,在插入复选框值到mssql数据库和检索相同的编辑页面 这是模型课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; } } 这是
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类型设置HTMLtype
属性。从下面的列表中,我们可以看到,对于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%" />