![](/img/trans.png)
[英]The parameter conversion from type 'System.String' to type 'System.Web.Mvc.SelectListItem' failed
[英]The parameter conversion from type 'System.String' to type 'System.Boolean' failed
验证后,我在Checkbox上的MVC中遇到错误。 我已经检查过该属性的值为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:
首先,确保IsCardForSaving
属性为布尔值而不是字符串:
public bool IsCardForSaving { get; set; }
我检查该属性的值为True
C#中布尔字段的正确值是true
,而不是True
。
更新:
现在,您已经显示了异常stacktrace,看来您的视图内还有另一个名称为IsCardForSaving
输入字段。 CheckBoxFor帮助程序会生成一个具有相同名称的其他隐藏字段,但是可以,因为它的值为false,这是可以的。 这是必需的,因为仅在HTML中,如果选中此复选框,其值将发送到服务器。 所以你得到这个:
<input type="checkbox" name="IsCardForSaving" />
<input type="hidden" name="IsCardForSaving" value="false" />
没关系。 现在寻找其他输入元素,除了那些两个具有相同name="IsCardForSaving"
。
编辑:
复选框帮助程序会自动发出一个其他带有假值的隐藏字段。
因此,如果选中此复选框,浏览器将为此复选框发送两个值:“ 1”和false(非数组类型优先于1),否则它将仅发送false。
:
1)更改您的财产名称
2)解决此问题的另一种方法( 我发现这是一种很好的做法 ),是避免在模型中使用“不可为空”的字段。
3)签出相同的问题: 从类型'System.String'到类型'X'的参数转换失败,因为没有类型转换器可以在这些类型之间进行转换
更新:
更多解决方案
问题是您的操作参数的名称
public ActionResult Deneme(DenemeModel model)
更改为
public ActionResult Deneme(DenemeModel request)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.