DropDownList中的ASP.NET Bind() - String Value vs. Null

时间:2013-04-10 05:00:51

标签: c# asp.net .net entity-framework data-binding

我希望有人能回答这个问题。我把头发拉出来了!

我有DropDownList,默认值为""从数据库中捕获NULL "价值" DropDownList的字段是varchar 这很好用。

但是,在保存记录时,该值将作为空字符串保留在数据库中。
重新绑定该记录后会抛出ArgumentOutOfRangeException
任何推荐的解决方

我目前正在使用以下绑定方法:

<asp:DropDownList ID="DestinationDropDownList" runat="server" 
   DataSourceID="CountryDataSource" DataTextField="Name" 
   DataValueField="CountryRegionCode" SelectedValue='<%#Bind("DestinationCountryCode")%>'
   AppendDataBoundItems="True">
    <asp:ListItem Text="Select..." Value=""></asp:ListItem>
</asp:DropDownList>

2 个答案:

答案 0 :(得分:2)

发现问题:
数据库中的“国家/地区”值字段是固定长度,因此它尝试绑定到“”(3个空格),其中现有的ListItem值仅为“”。 我将默认的ListItem值更改为“”,现在它可以正常工作。

答案 1 :(得分:0)

该区域可能是您在页面加载时绑定下拉列表。

将其绑定在if(!Page.IsPostback)内,它应该可以正常工作

if (!IsPostBack)
{
   //bin your dropdown here
}

修改

我不知道天气会起作用,但你可以创建一个如下所示的属性

private string _myProperty;
public string MyProperty
{
    get { return _myProperty; }
    set
    {
        if (value == String.Empty)
        {
            _myProperty = null;
        }
        else
        {
            _myProperty = value;
        }
    }
}