如何绑定到实体分部类中的自定义属性
本文关键字:自定义属性 实体 何绑定 绑定 | 更新日期: 2023-09-27 18:37:15
我有一个具有MailingState
属性的实体类。 我想在另一个属性中对该值进行一些操作,所以我添加了:
public string MailingStateAbbreviation
{
get { return getStateAbbreviation(MailingState); }
set { MailingState = value; }
}
但是,在DetailsView
EditItemTemplate
中,当我尝试提交编辑表单时,以下内容失败:
<asp:DropDownList ID="ddlMailingState" runat="server" DataSourceID="ddlAllStates"
AppendDataBoundItems="True" DataTextField="StateAbbreviation"
DataValueField="StateAbbreviation"
SelectedValue='<%# Bind("MailingStateAbbreviation") %>'>
<asp:ListItem Value="" Text="" />
</asp:DropDownList>
我收到此错误:
在插入、更新或删除操作期间,在实体上找不到名为"邮件状态缩写"的属性。检查以确保指定为绑定表达式的属性可用于数据源。
如果我在SelectedValue
上将Bind
更改为Eval
,表单提交正常,但MailingState
属性未更新。 如何将表单控件绑定到实体上的自定义属性?
虽然我更喜欢一种不涉及处理事件的更具声明性的方法,但这奏效了。 我在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>