【问题标题】:How to instruct ObjectDataSource to match form parameter with method parameter如何指示 ObjectDataSource 将表单参数与方法参数匹配
【发布时间】:2012-06-19 12:40:55
【问题描述】:

当使用 ObjectDataSource 我有以下选择:

<asp:DropDownList runat="server" SelectedValue='<%# Bind("InceptionCycle.ID") %>' ID="InceptionCycle" 
     DataSourceID="odsAllCycles" DataTextField="CycleName" DataValueField="ID" AppendDataBoundItems="true">
     <asp:ListItem Text="Choose..." Value=""></asp:ListItem>
</asp:DropDownList>

ObjectDataSource 配置了 UpdateMethodInsertMethod。但是插入/更新方法的参数具有 InceptionCycle 名称(因为 InceptionCycle.ID 不是有效的标识符)。

有没有办法指示 ObjectDataSource 将 InceptionCycle.ID 形式参数放入 InceptionCycle 方法参数中?

这里是完整的 ObjectDataSource 代码:

<asp:ObjectDataSource ID="ods" runat="server" TypeName="Sources.DomainSource"
    SelectMethod="FindById" InsertMethod="Add" UpdateMethod="Update"
    OnInserted="ods_Inserted" OnUpdated="ods_Updated">
    <SelectParameters>
        <asp:QueryStringParameter Name="id" QueryStringField="id" />
    </SelectParameters>
    <InsertParameters>
        <asp:Parameter ConvertEmptyStringToNull="true" Name="ShortTitle" />
        <asp:Parameter ConvertEmptyStringToNull="true" Name="WMRId" />
        <asp:Parameter ConvertEmptyStringToNull="true" Name="MDSId" />
        <asp:Parameter ConvertEmptyStringToNull="true" Name="Status" />
    </InsertParameters>
    <UpdateParameters>
        <asp:QueryStringParameter Name="id" QueryStringField="id" />
        <asp:Parameter ConvertEmptyStringToNull="true" Name="ShortTitle" />
        <asp:Parameter ConvertEmptyStringToNull="true" Name="WMRId" />
        <asp:Parameter ConvertEmptyStringToNull="true" Name="MDSId" />
        <asp:Parameter ConvertEmptyStringToNull="true" Name="Status" />
    </UpdateParameters>
</asp:ObjectDataSource>

【问题讨论】:

  • 看来您需要在该 ObjectDataSource 上指定控制参数。请粘贴您的 ObjectDataSource 定义。
  • 哦,我的 Add/Update 方法不将对象作为参数,而是简单类型(int/string)

标签: asp.net .net objectdatasource


【解决方案1】:

您只能对顶级属性使用 Bind 语法 - 它不支持嵌套属性(不过 VS 2012 会支持)。

因此,您应该像下面那样在数据源上创建一个新属性,并将 SelectedValue 绑定到这个新属性

 public string InceptionCycleID
 {
      get
      {
           return InceptionCycle.ID;
      }
      set
      {
           InceptionCycle.ID = value;
      }
 }

【讨论】:

  • 实际上,将值绑定到选择控件,这不是问题,也没有说明问题。更重要的是,我的 SelectedValue 在表单加载时被正确绑定。
猜你喜欢
  • 2010-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
  • 2022-12-24
相关资源
最近更新 更多