0

我目前正在测试 ASP.NET 4.5 中的模型绑定。

我正在测试一个表单视图,它接受来自用户的数据,并在成功保存后在下面的 GridView 中显示数据列表。当数据保存到列表时,gridview 保持为空。

我通过使用 ObjectDataSource 尝试了这个示例,并且在保存表单数据时,在回发之后,网格视图显示了列表中的所有项目,它工作正常。

在使用模型绑定时,我是否正在做一些阻止获得所需行为的事情?如果是这样,获得所需行为的正确方法是什么?

formview 和 Grid 视图的 ASP.NET 标记

    <asp:FormView ID="FormView1" runat="server" DefaultMode="Insert" ItemType="WebApplication35.Person" InsertMethod="SavePerson" SelectMethod="GetPeople">
                <HeaderTemplate>
                    <asp:ValidationSummary ID="ValidationSummary1" runat="server" />

                </HeaderTemplate>


                <InsertItemTemplate>
                    FirstName:

                    <asp:TextBox ID="FirstNameTextBox" runat="server" Text='<%# BindItem.FirstName %>' />
                    <br />
                    LastName:
                    <asp:TextBox ID="LastNameTextBox" runat="server" Text='<%# BindItem.LastName %>' />
                    <br />
                    Age:
                    <asp:TextBox ID="AgeTextBox" runat="server" Text='<%# BindItem.Age %>' />
                    <br />
                    <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" CommandName="Insert" Text="Insert" />
                    &nbsp;<asp:LinkButton ID="InsertCancelButton" runat="server" CausesValidation="False" CommandName="Cancel" Text="Cancel" />
                </InsertItemTemplate>

            </asp:FormView>
    <asp:GridView ID="GridView1" runat="server" ItemType="WebApplication35.Person" SelectMethod="GetPeople"  PageSize="2">
    </asp:GridView>

背后的代码

public partial class WebForm1 : System.Web.UI.Page
{


    private static List<Person> people = new List<Person>();

    public IEnumerable<Person> GetPeople()
    {
        return people;
    }

    public void SavePerson(Person person)
    {
        people.Add(person);
    }


}

人物类

public class Person
{
    [Required]
    public string FirstName { get; set; }

    [Required]
    public string LastName { get; set; }

    [Required]
    public int Age { get; set; }

}
4

1 回答 1

2

GridView 将最后选择的数据存储在视图状态中,并且在回发后不会更新它。

所以如果你想看到更新的结果,在插入之后,你需要重新绑定网格或禁用它的视图状态

于 2013-07-26T11:36:14.073 回答