【问题标题】:ASP.NET Int32 Eval errorASP.NET Int32 评估错误
【发布时间】:2013-01-04 07:21:44
【问题描述】:

我有这行:

<asp:HyperLink ID="awsImage" runat="server" Target="_blank" 
ImageUrl='<%# Eval("ImageURL") %>' Width='<%# Eval("ImageWidth").ToString() %>'
Height='<%# Eval("ImageHeight").ToString() %>' ></asp:HyperLink>

我得到这个错误:

描述:在编译服务此请求所需的资源期间发生错误。请查看以下特定错误详细信息并适当修改您的源代码。

编译器错误消息:CS0030:无法将类型“字符串”转换为“System.Web.UI.WebControls.Unit”

我也尝试过不带 .ToString 的简单 Eval,但出现此错误:如果我使用不带 .ToString 的 Eval,这就是我得到的确切错误

异常详细信息:System.InvalidCastException:指定的强制转换无效。

【问题讨论】:

  • 评估表达式的结果是什么?无论如何,你必须离开 ToString
  • 如果我使用没有 .ToString 异常详细信息的 Eval,我得到的确切错误:System.InvalidCastException:指定的转换无效。
  • 是的,但是你的 Eval 的返回值是多少?如果您有 InvalidCast 异常,则结果必须是错误的类型。
  • 该值是一个 Int32,我将其传递给 Eval

标签: asp.net eval


【解决方案1】:

使用这个

<asp:HyperLink ID="awsImage" runat="server" Target="_blank" 
ImageUrl='<%# Eval("ImageURL") %>' 
Width='<%# Unit.Pixel(Convert.ToInt32(Eval("ImageWidth"))) %>'
Height='<%# Unit.Pixel(Convert.ToInt32(Eval("ImageHeight"))) %>' ></asp:HyperLink>

【讨论】:

  • 然后我收到此错误:无法从其字符串表示 '' 用于“宽度”属性。
  • 快速提问您使用的是 GRID 还是任何绑定控件?
  • 用你的新答案,我得到这个错误:CS0030: Cannot convert type 'string' to 'System.Web.UI.WebControls.Unit'
  • 我已经改变了所有,也粘贴了你的完整答案,我得到了这个:CS0030: Cannot convert type 'string' to 'System.Web.UI.WebControls.Unit'
【解决方案2】:

我查看了MSDNHeightWidth 属于 Unit 类型:

Width='<%# new Unit((int)Eval("ImageWidth")) %>' 
Height='<%# new Unit((int)Eval("ImageHeight")) %>'

或者使用静态方法Unit.Pixel

Width='<%# Unit.Pixel((int)Eval("ImageWidth")) %>' 
Height='<%# Unit.Pixel((int)Eval("ImageHeight")) %>'

因为表达式是在服务器上计算的,所以您必须提供正确的数据类型(编译器生成代码)。

【讨论】:

  • 解析器错误信息:服务器标签格式不正确。
  • 对不起,我错过了结束)
  • CS0118: 'System.Web.UI.WebControls.Unit' 是一个“类型”,但用作“变量”
  • puuh,这很难。不,我明白了。抱歉,拖了我这么久
  • 谢谢!它适用于 (Unit)(int)Eval 或我选择作为正确答案的上述答案。使用 Unit((int)Eval... 不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-27
  • 2019-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-11
  • 2020-04-21
相关资源
最近更新 更多