从代码隐藏(.aspx.cs)类更改视图(.aspx)

时间:2010-11-01 06:48:49

标签: asp.net

我有一个'经典'ASP.NET应用程序(.NET 3.5),带有非常标准的runat="server"样式表单,带有服务器端控件和'Execute'asp:button。在代码隐藏中,executeButton_click处理程序处理一些其他控件,运行报表,并将结果删除到asp:label。因此,按下执行按钮的效果是整个页面重新加载,并将报告插入标签。

我需要更改它,以便在按下Execute按钮时,报告会弹出一个具有不同布局的新窗口(即没有控件和窗体)。如果我在MVC框架中执行此操作,我只需更改“执行”操作中的视图模板,因此ASP.NET的模拟将更改前面的代码,即从代码中使用的.aspx文件 - 课后。

这可能吗?我知道.aspx和.aspx.cs之间的链接并不是非常严格,因为可以在多个.aspx文件中重用代码隐藏类。那么我可以将.aspx文件设置为从代码隐藏中呈现吗?

2 个答案:

答案 0 :(得分:1)

通常,您可以使用

将用户定向到新页面
Response.Redirect("UrlToNewPage.aspx");

但是,如果您需要访问原始表单上的控件的属性,则可以采用另一种方法。将asp:按钮的“PostBackURL”属性更改为第二页。然后在第二页上将(@Page PreviousPageType)指令设置在aspx文件的顶部,这告诉该页面它将作为page1.aspx的帖子的目标。然后,在第二页的代码后面,您可以使用Page.PreviousPage属性访问第一页上的控件

为了共享代码,你可以创建一个基类,如果你想要共享代码,那么两个aspx.cs类都继承自这个基类。

答案 1 :(得分:0)

我认为这是不可能的,因为ASP.NET的工作方式。 ASP.NET中的视图文件由ASP.NET引擎动态编译为代码隐藏类的子类。当请求URL时,子类是实例化和执行的。从代码隐藏类更改视图是尝试更改具体类型。我们可以有多个.aspx文件继承自单个代码隐藏类,但反之亦然。

非-ASP.NET框架能够做到这一点,因为视图只是一个模板文件,在控制器操作完成后由框架动态处理,因此可以在不干扰继承问题的情况下更改视图