3

我试图在 ASPNET 4.5 Webforms 中使用新的 ModelBinding 功能但没有成功。

由于某种原因,Contact.ContactType 在提交表单后仍然为空。

模型:

public class Contact
{
    public int ContactId { set; get; }
    public string Name { set; get; }
    public string Phone { set; get; }

    public ContactType ContactType { set; get; }
}

public class ContactType 
{
    public int ContactTypeId { set; get; }
    public string Description { set; get; }

public virtual ICollection<Contact> Contacts { set; get; }
}

ASPX:

<asp:FormView ID="FormView1" runat="server"
    ItemType="Models.Contact" DataKeyNames="ContactId" 
     DefaultMode="Insert" InsertMethod="InsertContact" >
    <InsertItemTemplate>
        <ul>
            <li>
                <label>Name</label>
                <asp:DynamicControl runat="server" id="Name" DataField="Name" Mode="Insert" />
            </li>
            <li>
                <label>Phone</label>
                <asp:DynamicControl runat="server" id="Phone" DataField="Phone" Mode="Insert"  />
            </li>
            <li>
                <label>Contact Type</label>
                <asp:DropDownList ID="ContactType" runat="server" AppendDataBoundItems="true"
                    ItemType="Models.ContactType" SelectMethod="GetContactTypes"
                    DataTextField="Description" DataValueField="ContactTypeId">
                    <asp:ListItem Value="0" Text="Select"></asp:ListItem>
                </asp:DropDownList>
            </li>
            <li>
                <asp:LinkButton ID="LinkButton1" runat="server"
                    CommandName="Insert" Text="Insert" >

                </asp:LinkButton>
            </li>
        </ul>
    </InsertItemTemplate>
</asp:FormView>

ASPX.CS:

public void InsertContact(Contact contact)
    {
        if (ModelState.IsValid)
        {
            // Save changes here
        }
    }

如何在下拉列表/列表框中成功使用 ModelBinding?

4

1 回答 1

6

您可以在 getcontacttypes 中返回字典,然后使用:

    <asp:DropDownList ID="ContactType" runat="server" AppendDataBoundItems="true"
       SelectMethod="GetContactTypes"
      DataTextField="Value" DataValueField="Key"
      SelectedValue="<%# BindItem.ContactTypeId%>"
      >
      <asp:ListItem Value="0" Text="Select"></asp:ListItem>
    </asp:DropDownList>

SelectedValue="<%# BindItem.ContactTypeId%>" 很重要

于 2012-12-18T19:37:24.853 回答