C# 从类型';System.String';输入';System.Boolean';失败

C# 从类型';System.String';输入';System.Boolean';失败,c#,asp.net,asp.net-mvc,asp.net-mvc-3,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,验证后,我在MVC on复选框中发现以下错误。我已经检查了属性的值是否为True,但仍然得到相同的错误 @Html.CheckBoxFor(m => m.IsCardForSaving, new { @class = "savecard" }) 例外情况: System.InvalidOperationException was unhandled by user code HResult=-2146233079 Message=The parameter conversion

验证后,我在MVC on复选框中发现以下错误。我已经检查了属性的值是否为True,但仍然得到相同的错误

 @Html.CheckBoxFor(m => m.IsCardForSaving, new { @class = "savecard" })
例外情况:

System.InvalidOperationException was unhandled by user code   HResult=-2146233079   Message=The parameter conversion from type 'System.String' to type 'System.Boolean' failed. See the inner exception for more information.   Source=System.Web.Mvc   StackTrace:
       at System.Web.Mvc.ValueProviderResult.ConvertSimpleType(CultureInfo culture, Object value, Type destinationType)
       at System.Web.Mvc.HtmlHelper.GetModelStateValue(String key, Type destinationType)
       at System.Web.Mvc.Html.InputExtensions.InputHelper(HtmlHelper htmlHelper, InputType inputType, ModelMetadata metadata, String name, Object value, Boolean useViewData, Boolean isChecked, Boolean setId, Boolean isExplicitValue, String format, IDictionary`2 htmlAttributes)
       at System.Web.Mvc.Html.InputExtensions.CheckBoxHelper(HtmlHelper htmlHelper, ModelMetadata metadata, String name, Nullable`1 isChecked, IDictionary`2 htmlAttributes)
       at System.Web.Mvc.Html.InputExtensions.CheckBoxFor[TModel](HtmlHelper`1 htmlHelper, Expression`1 expression, IDictionary`2 htmlAttributes)
       at ASP._Page_Views_Payment_EditorTemplates_PaymentDetails_cshtml.Execute() in f:\FPNext-Latest\FPNext-COA\FPNext\Views\Payment\EditorTemplates\PaymentDetails.cshtml:line 82
       at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
       at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
       at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
       at System.Web.Mvc.Html.TemplateHelpers.ExecuteTemplate(HtmlHelper html, ViewDataDictionary viewData, String templateName, DataBoundControlMode mode, GetViewNamesDelegate getViewNames, GetDefaultActionsDelegate getDefaultActions)
       at System.Web.Mvc.Html.TemplateHelpers.TemplateHelper(HtmlHelper html, ModelMetadata metadata, String htmlFieldName, String templateName, DataBoundControlMode mode, Object additionalViewData, ExecuteTemplateDelegate executeTemplate)
       at System.Web.Mvc.Html.TemplateHelpers.TemplateHelper(HtmlHelper html, ModelMetadata metadata, String htmlFieldName, String templateName, DataBoundControlMode mode, Object additionalViewData)
       at System.Web.Mvc.Html.TemplateHelpers.TemplateFor[TContainer,TValue](HtmlHelper`1 html, Expression`1 expression, String templateName, String htmlFieldName, DataBoundControlMode mode, Object additionalViewData)
       at System.Web.Mvc.Html.EditorExtensions.EditorFor[TModel,TValue](HtmlHelper`1 html, Expression`1 expression)
       at ASP._Page_Views_Payment_Air_cshtml.Execute() in f:\FPNext-Latest\FPNext-COA\FPNext\Views\Payment\Air.cshtml:line 182
       at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
       at System.Web.Mvc.WebViewPage.ExecutePageHierarchy()
       at System.Web.WebPages.StartPage.ExecutePageHierarchy()
       at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
       at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
       at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass1a.<InvokeActionResultWithFilters>b__17()
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation)   InnerException: System.FormatException
       HResult=-2146233033
       Message=true,false is not a valid value for Boolean.
       Source=System
       StackTrace:
            at System.ComponentModel.BooleanConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
            at System.Web.Mvc.ValueProviderResult.ConvertSimpleType(CultureInfo culture, Object value, Type destinationType)
       InnerException: System.FormatException
            HResult=-2146233033
            Message=String was not recognized as a valid Boolean.
            Source=mscorlib
            StackTrace:
                 at System.Boolean.Parse(String value)
                 at System.ComponentModel.BooleanConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
            InnerException:
System.InvalidOperationException未被用户代码HResult=-2146233079处理消息=从类型“System.String”到类型“System.Boolean”的参数转换失败。有关更多信息,请参见内部异常。Source=System.Web.Mvc StackTrace:
位于System.Web.Mvc.ValueProviderResult.ConvertSimpleType(CultureInfo区域性,对象值,类型destinationType)
位于System.Web.Mvc.HtmlHelper.GetModelStateValue(字符串键,类型destinationType)
在System.Web.Mvc.Html.InputExtensions.InputHelper(HtmlHelper、InputType InputType、ModelMetadata元数据、字符串名称、对象值、布尔useViewData、布尔isChecked、布尔setId、布尔isExplicitValue、字符串格式、IDictionary`2 htmlAttributes)
位于System.Web.Mvc.Html.InputExtensions.CheckBoxHelper(HtmlHelper HtmlHelper,ModelMetadata元数据,字符串名称,可空'1已检查,IDictionary'2 htmlAttributes)
在System.Web.Mvc.Html.InputExtensions.CheckBoxFor[TModel](HtmlHelper`1 HtmlHelper,Expression`1 Expression,IDictionary`2 htmlAttributes)
在ASP.\页\查看\付款\编辑模板\付款明细\ cshtml.Execute()中的f:\FPNext Latest\FPNext COA\FPNext\Views\Payment\EditorTemplates\PaymentDetails.cshtml:第82行
在System.Web.WebPages.WebPageBase.ExecutePageHierarchy()中
在System.Web.Mvc.WebViewPage.ExecutePageHierarchy()中
位于System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext、TextWriter writer、WebPageRenderingBase起始页)
位于System.Web.Mvc.Html.TemplateHelpers.ExecuteTemplate(HtmlHelper Html、ViewDataDictionary viewData、String templateName、DataBoundControlMode、getViewNames委托getViewNames、getDefaultActions删除getDefaultActions)
位于System.Web.Mvc.Html.TemplateHelpers.TemplateHelper(HtmlHelper Html、ModelMetadata元数据、字符串htmlFieldName、字符串templateName、DataBoundControlMode模式、对象附加视图数据、ExecuteTemplateDelegate executeTemplate)
位于System.Web.Mvc.Html.TemplateHelpers.TemplateHelper(HtmlHelper Html、ModelMetadata元数据、字符串htmlFieldName、字符串templateName、DataBoundControlMode模式、对象附加视图数据)
在System.Web.Mvc.Html.TemplateHelpers.TemplateFor[TContainer,TValue](HtmlHelper`1 Html,Expression`1 Expression,String templateName,String htmlFieldName,DataBoundControlMode模式,Object additionalViewData)
位于System.Web.Mvc.Html.EditorExtensions.EditorFor[TModel,TValue](HtmlHelper`1 Html,Expression`1 Expression)
在ASP.\u Page\u Views\u Payment\u Air\u cshtml.Execute()中的f:\FPNext Latest\FPNext COA\FPNext\Views\Payment\Air.cshtml:第182行
在System.Web.WebPages.WebPageBase.ExecutePageHierarchy()中
在System.Web.Mvc.WebViewPage.ExecutePageHierarchy()中
在System.Web.WebPages.StartPage.ExecutePageHierarchy()中
位于System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext、TextWriter writer、WebPageRenderingBase起始页)
在System.Web.Mvc.ViewResultBase.ExecuteSult(ControllerContext上下文)中
在System.Web.Mvc.ControllerActionInvoker.c_uuDisplayClass1A.b_uuu17()中
在System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter筛选器,ResultExecutingContext预文本,Func`1 continuation)InnerException:System.FormatException
HResult=-21462033
Message=true,false不是布尔值的有效值。
来源=系统
堆栈跟踪:
位于System.ComponentModel.BooleanConverter.ConvertFrom(ITypeDescriptorContext上下文、CultureInfo区域性、对象值)
位于System.Web.Mvc.ValueProviderResult.ConvertSimpleType(CultureInfo区域性,对象值,类型destinationType)
InnerException:System.FormatException
HResult=-21462033
消息=字符串未被识别为有效的布尔值。
Source=mscorlib
堆栈跟踪:
at System.Boolean.Parse(字符串值)
位于System.ComponentModel.BooleanConverter.ConvertFrom(ITypeDescriptorContext上下文、CultureInfo区域性、对象值)
内部异常:

首先确保
IsCardForSaving
属性是布尔值而不是字符串:

public bool IsCardForSaving { get; set; }
我已检查该属性的值是否为True

C#中布尔字段的正确值为
true
,而不是
true


更新:

现在显示了异常stacktrace,视图中似乎有另一个输入字段,名称相同
IsCardForSaving
。checkboxforhelper会生成一个具有相同名称的附加隐藏字段,但这没关系,因为它的值为false。这是必需的,因为在HTML中,只有选中复选框,其值才会发送到服务器。所以你得到这个:

<input type="checkbox" name="IsCardForSaving" />
<input type="hidden" name="IsCardForSaving" value="false" />


那很好。现在查找其他一些输入元素,除了具有相同的
name=“IsCardForSaving”

的2个元素之外,首先确保
IsCardForSaving
属性是布尔值而不是字符串:

public bool IsCardForSaving { get; set; }
我已检查该属性的值是否为True

C#中布尔字段的正确值为
true
,而不是
true


更新:

现在显示了异常stacktrace,视图中似乎有另一个输入字段,名称相同
IsCardForSaving
。checkboxforhelper会生成一个具有相同名称的附加隐藏字段,但这没关系,因为它的值为false。这是必需的,因为在HTML中,只有选中复选框,其值才会发送到服务器。所以你得到这个:

<input type="checkbox" name="IsCardForSaving" />
<input type="hidden" name="IsCardForSaving" value="false" />

那很好。现在寻找其他一些输入元素