我在ASP.Net方面不是很有经验,因为我主要使用PHP。 我正在尝试这个,但它不起作用:
<asp:TextBox runat="server" ID="txtAnswer"
TextMode='<%# IIf(DataBinder.Eval(Container.DataItem, "DoLargeInput"), "MultiLine", "SingleLine" )%>' Text=''></asp:TextBox>
DoLargeInput是一个布尔值。
为什么这不起作用?
我遇到以下错误:
System.InvalidCastException: Conversion from string "MultiLine" to type 'Integer' is not valid. ---> System.FormatException: Input string was not in a correct format.
at Microsoft.VisualBasic.CompilerServices.Conversions.ParseDouble(String Value, NumberFormatInfo NumberFormat)
at Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(String Value)
--- End of inner exception stack trace ---
at Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(String Value)
at Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(Object Value)
at ASP.profile_questions_aspx.__DataBinding__control6(Object sender, EventArgs e)
at System.Web.UI.Control.OnDataBinding(EventArgs e)
at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding)
at System.Web.UI.Control.DataBind()
at System.Web.UI.Control.DataBindChildren()
at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding)
at System.Web.UI.Control.DataBind()
at System.Web.UI.WebControls.Repeater.CreateItem(Int32 itemIndex, ListItemType itemType, Boolean dataBind, Object dataItem)
at System.Web.UI.WebControls.Repeater.CreateControlHierarchy(Boolean useDataSource)
at System.Web.UI.WebControls.Repeater.OnDataBinding(EventArgs e)
at System.Web.UI.WebControls.Repeater.DataBind()
at profile_questions.LoadObjects()
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
尝试: -
IIf(DataBinder.Eval(Container.DataItem, "DoLargeInput"), TextBoxMode.MultiLine, TextBoxMode.SingleLine
这个解析器会为你准确地转换TextMode =“MultiLine”。在此绑定代码发生时,解析结束,您需要像在代码中一样指定值。
答案 1 :(得分:0)
转换为'Integer'失败是因为TextMode属性是.NET enum
,它在内部表示为整数。 TextBoxMode.MultiLine
和TextBoxMode.SingleLine
代表正确的价值。
在MSDN上,您可以看到TextBox.TextMode
property类型为TextBoxMode
。