以前从未做过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")
正在做什么的解释。
答案 0 :(得分:6)
据说这里有两组数据:
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.
这告诉您代码隐藏发送的值与下拉列表中的任何值都不匹配。