我一直在关注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模式。
我正在使用以下文章进行转换:
答案 0 :(得分:0)
您不能在ASP.NET MVC应用程序中使用依赖于状态的控件,ASP.NET MVC中没有“视图状态”,因此服务器端控件将不会记住它们在回发之间的状态。
查看jqGrid以获取用于创建酷网格的jQuery库。