[英]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.