在.aspx中:
<asp:ObjectDataSource ID="odsBook" runat="server" SelectMethod="GetBookById"
TypeName="MyBookShop.BLL.BookManager" UpdateMethod="ModifyBook">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="0" Name="id" QueryStringField="id" Type="Int32" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="title" Type="String" />
<asp:Parameter Name="Toc" Type="String" />
<asp:Parameter Name="UnitPrice" Type="Decimal" />
<asp:Parameter Name="PublishDate" Type="DateTime" />
<asp:Parameter Name="id" Type="Int32" />
<asp:ControlParameter Name="Publisherid" Type="Int32" ControlID="ddlPublisher" PropertyName="SelectedValue"/>
</UpdateParameters>
</asp:ObjectDataSource>
有时候会出现错误,情况如下:
“/Web”应用程序中的服务器错误。
未能在 ControlParameter“Publisherid”中找到控件“ddlPublisher”。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidOperationException: 未能在 ControlParameter“Publisherid”中找到控件“ddlPublisher”。
源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
堆栈跟踪:
[InvalidOperationException: 未能在 ControlParameter“Publisherid”中找到控件“ddlPublisher”。]
System.Web.UI.WebControls.ControlParameter.Evaluate(HttpContext context, Control control) +1719520
System.Web.UI.WebControls.Parameter.UpdateValue(HttpContext context, Control control) +46
System.Web.UI.WebControls.ParameterCollection.UpdateValues(HttpContext context, Control control) +103
System.Web.UI.WebControls.ParameterCollection.GetValues(HttpContext context, Control control) +36
System.Web.UI.WebControls.ObjectDataSourceView.ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues) +1679
System.Web.UI.DataSourceView.Update(IDictionary keys, IDictionary values, IDictionary oldValues, DataSourceViewOperationCallback callback) +78
System.Web.UI.WebControls.DetailsView.HandleUpdate(String commandArg, Boolean causesValidation) +1152
System.Web.UI.WebControls.DetailsView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +461
System.Web.UI.WebControls.DetailsView.OnBubbleEvent(Object source, EventArgs e) +95
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +35
System.Web.UI.WebControls.DetailsViewRow.OnBubbleEvent(Object source, EventArgs e) +109
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +35
System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +115
System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +163
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +174
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
堆栈跟踪:
[InvalidOperationException: 未能在 ControlParameter“Publisherid”中找到控件“ddlPublisher”。]
System.Web.UI.WebControls.ControlParameter.Evaluate(HttpContext context, Control control) +1719520
System.Web.UI.WebControls.Parameter.UpdateValue(HttpContext context, Control control) +46
System.Web.UI.WebControls.ParameterCollection.UpdateValues(HttpContext context, Control control) +103
System.Web.UI.WebControls.ParameterCollection.GetValues(HttpContext context, Control control) +36
System.Web.UI.WebControls.ObjectDataSourceView.ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues) +1679
System.Web.UI.DataSourceView.Update(IDictionary keys, IDictionary values, IDictionary oldValues, DataSourceViewOperationCallback callback) +78
System.Web.UI.WebControls.DetailsView.HandleUpdate(String commandArg, Boolean causesValidation) +1152
System.Web.UI.WebControls.DetailsView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +461
System.Web.UI.WebControls.DetailsView.OnBubbleEvent(Object source, EventArgs e) +95
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +35
System.Web.UI.WebControls.DetailsViewRow.OnBubbleEvent(Object source, EventArgs e) +109
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +35
System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +115
System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +163
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +174
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5102
解决方案是:
<asp:ControlParameter Name="Publisherid" Type="Int32" ControlID="dvBookList$ddlPublisher" PropertyName="SelectedValue"/>
这个ID是控件的UniqueID.如果不知道这个值是什么可以设置断点找到控件的引用然后检查UniqueID属性