指定的类型转换无效
本文关键字:无效 类型转换 | 更新日期: 2023-09-27 18:08:33
我有一个布尔复选框,当我调试时,我得到指定的强制转换无效的错误。我做错了什么?
<input type="checkbox" name="spam" <%if ((bool) ViewData["spam"]) Response.Write("checked"); %><%if (teststring.Length==0) Response.Write("disabled"); %>/> Check here if you want to receive junk mail (spam).
谢谢
此错误意味着您设置的不是布尔值ViewData["spam"](甚至不设置它)。要处理这种情况,请编写下面的代码:
<input type="checkbox" name="spam"
<%if (ViewData["spam"] is bool && (bool) ViewData["spam"]) Response.Write("checked"); %>
<%if (teststring.Length==0) Response.Write("disabled"); %>/>
Check here if you want to receive junk mail (spam).
请记住,您必须手动设置ViewData["spam"]
尝试使用"Convert.ToBoolean(视讯系统["垃圾邮件"])"而不是bool)视讯系统("垃圾邮件")
如果您想将some value
转换为specific type
即incompatible
,则会出现Casting error
,例如,如果您想将abc
转换为bool
,则会出现throw exception
。exception
的一个原因可能是ViewData["spam"]
可以是null
或包含boolean
类型的not compatible
值。你可以写
<input type="checkbox" name="spam" <%if (ViewData["spam"]!=null && (bool) ViewData["spam"]) Response.Write("checked"); %><%if (teststring.Length==0) Response.Write("disabled"); %>/> Check here if you want to receive junk mail (spam).
将布尔值放入视图数据中:
ViewData["spam"] = mypatient.spam;
或者检查字符串:
<%= ViewData["spam"].ToString() == "Y" ? "checked" : "" %>