【问题标题】:How to bind to a custom property in my entity partial class如何绑定到我的实体部分类中的自定义属性
【发布时间】:2012-06-18 18:41:27
【问题描述】:

我有一个带有MailingState 属性的实体类。我想在另一个属性中对该值进行一些操作,所以我补充说:

public string MailingStateAbbreviation
{
    get { return getStateAbbreviation(MailingState); }
    set { MailingState = value; }
}

但是,在DetailsViewEditItemTemplate 中,当我尝试提交编辑表单时,以下操作失败:

<asp:DropDownList ID="ddlMailingState" runat="server" DataSourceID="ddlAllStates"
        AppendDataBoundItems="True" DataTextField="StateAbbreviation"
        DataValueField="StateAbbreviation"
        SelectedValue='<%# Bind("MailingStateAbbreviation") %>'>
    <asp:ListItem Value="" Text="" />
</asp:DropDownList>

我收到此错误:

在插入、更新或删除操作期间,在实体上找不到名为“MailingStateAbbreviation”的属性。检查以确保指定为绑定表达式的属性可用于数据源。

如果我将SelectedValue 上的Bind 更改为Eval,则表单提交正常,但MailingState 属性未更新。如何将表单控件绑定到实体上的自定义属性?

【问题讨论】:

    标签: c# asp.net data-binding drop-down-menu eval


    【解决方案1】:

    虽然我更喜欢不涉及处理事件的更具声明性的方法,但这很有效。我在DetailsView 中添加了一个OnItemUpdating 处理程序,实现如下:

    protected void dvOrg_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
    {
        var view = (DetailsView)sender;
        var mailStateDdl = (DropDownList)view.FindControl("ddlMailingState");
        e.NewValues["MailingState"] = mailStateDdl.SelectedValue;
    }
    

    在我的 .aspx 中,我有这个:

    <asp:DropDownList ID="ddlMailingState" runat="server" DataSourceID="ddlAllStates"
            AppendDataBoundItems="True" DataTextField="StateAbbreviation"
            DataValueField="StateAbbreviation"
            SelectedValue='<%# Eval("MailingStateAbbreviation") %>'>
        <asp:ListItem Value="" Text="" />
    </asp:DropDownList>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-20
      • 1970-01-01
      • 2016-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多