ASP.Net Webforms + MVC - 工作除了回发?

时间:2011-06-05 17:35:01

标签: asp.net-mvc webforms

我一直在关注ASP.Net Webforms + MVC('Hybrid'ASP.Net网站)的一些文章,以便迁移我们的遗留网络应用程序之一。我想我已经设法在迁移的应用程序中获得了大部分功能,但是我发现当我回发时(例如使用ASP.Net ajax),gridviews等控件会丢失它们的状态。 / p>

当用户点击某行的“编辑”时,代码大致如下:

public int GetActivityTypeId(int index)
{
    // Get the row data from the grid
    GridViewRow row = GrdContent.Rows[index]; << Rows is 0 in Hybrid app, works pre-conversion

    // Cell 0 is the Id
    return int.Parse(row.Cells[0].Text);
}

控制配置如下:

<asp:UpdatePanel runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:GridView ID="GrdContent" runat="server" AutoGenerateColumns="false"
            AllowPaging="false" CssClass="GridViewStyle" OnRowDeleting="GrdContentRowDeleting"
             OnRowEditing="GrdContentRowEditing" OnRowDataBound="GrdContentRowDataBound">
            <FooterStyle CssClass="GridViewFooterStyle" />
            <RowStyle CssClass="GridViewRowStyle" />
            <SelectedRowStyle CssClass="GridViewSelectedRowStyle" />
            <AlternatingRowStyle CssClass="GridViewAlternatingRowStyle" />
            <HeaderStyle CssClass="GridViewHeaderStyle" />
            <Columns>             
                <asp:BoundField DataField="ID" />
                <asp:BoundField DataField="Name" HeaderText="Activity Type Name" />
                <asp:BoundField DataField="ParentActivityTypeName" HeaderText="Activity Type Parent" />
                <asp:CommandField ShowEditButton="true" ShowDeleteButton="true" ButtonType="Link" />
            </Columns>
        </asp:GridView>
        <ctl:CustomPager ID="PgrCustom" runat="server" OnPageIndexChanging="PgrCustomPageIndexChanging" />
    </ContentTemplate>
    <Triggers>
        <asp:AsyncPostBackTrigger ControlID="BtnModalOkay" EventName="click" />
        <asp:AsyncPostBackTrigger ControlID="BtnFilter" EventName="click" />
    </Triggers>
</asp:UpdatePanel>

遗留代码遵循MVP模式。

我正在使用以下文章进行转换:

1 个答案:

答案 0 :(得分:0)

您不能在ASP.NET MVC应用程序中使用依赖于状态的控件,ASP.NET MVC中没有“视图状态”,因此服务器端控件将不会记住它们在回发之间的状态。

查看jqGrid以获取用于创建酷网格的jQuery库。