aspx文件中的<%#表示什么

时间:2016-03-16 13:21:30

标签: asp.net

以前从未做过aspx。试图解决一个错误。

我已将其跟踪到这行代码:

<asp:DropDownList ID="ddlProject_Edit" selectedvalue='<%# Bind("ProjectsId") %>' runat="server"  CssClass="ddl" DataSourceID="dsProject_Edit" DataTextField="DESCRIPTION" DataValueField="BOUND_"></asp:DropDownList>

我收到了这个错误:

Error: Sys.WebForms.PageRequestManagerServerErrorException: 'ddlProject_Edit' has a SelectedValue which is invalid because it does not exist in the list of items.

所以我猜它与<%# Bind("ProjectsId") %>篇有关。

<%#做什么?谷歌搜索这些角色并没有证明是非常有成效的。

更有帮助的是对Bind("ProjectsId")正在做什么的解释。

4 个答案:

答案 0 :(得分:6)

这是Data Binding Expression

据说这里有两组数据:

  • 用于填充DropDownList
  • 中的选项的一组项目
  • 转发器/网格/等中的一组记录。某种包含DropDownList

这段代码的用处基本上是:

  

记录这个&#34; row&#34;表示,将此控件的值设置为该记录中的ProjectsId值。

对于错误,发生的事情是该记录的值在DropDownList中不存在。为了说明这一点,我们假设您有DropDownList项,其中包含以下内容:

  • 苹果
  • 香蕉

这里发生的事情是记录的值为"Pear"。因此,系统无法在DropDownList中设置值,因为该值不存在。

这背后的潜在问题是数据不好。数据中存在参考完整性。记录具有不存在的查找值。数据需要更正,或者应用程序不能再认为数据是正确的并且必须考虑到这一点。

答案 1 :(得分:3)

在这种情况下,它是data-binding expression

如链接中所述:

  

[data binding]允许您将控件属性值绑定到数据并指定值   用于检索,更新,删除和插入数据。

     

Bind函数用于双向(可更新)绑定。此外   调用Eval和Bind方法来执行数据绑定   数据绑定表达式,您可以调用任何公共范围的代码   &lt;%#和%&gt;用于执行该代码并返回值的分隔符   在页面处理期间。

通过绑定SelectedValue,当控件受数据绑定时,它实际上会导致设置值。

答案 2 :(得分:2)

aspnet表单代码中的符号#表示绑定到字段,因此需要在Bind(“ProjectsId”)之前使用它。您的问题是绑定中设置的选定值不在下拉列表中填充的项目列表中,或者可能在下拉列表填充之前发生绑定。

答案 3 :(得分:0)

<%#   %>

这些是asp .Net使用的括号,用于设置代码隐藏代码将使用的区域。

 <%# Bind("ProjectsId") %>

这一行只是告诉编译器将下拉列表的起始值设置为ProjectsId值,该值将从代码隐藏中发送。

您的错误消息:

Error: Sys.WebForms.PageRequestManagerServerErrorException: 'ddlProject_Edit' has a SelectedValue which is invalid because it does not exist in the list of items.

这告诉您代码隐藏发送的值与下拉列表中的任何值都不匹配。