如何重用apsx代码?

时间:2012-09-27 20:36:36

标签: c# asp.net .net design-patterns

我知道在C#中我可以创建一个工厂,但我不知道如何在aspx中重用代码。我的代码最初仅用于ARList,但现在有IcnList。我想过制作一个switch语句,但是代码没有更好的东西吗?

功能

 protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                ARExtractionController arController = new ARExtractionController();
                Dictionary<int, string> ARDictionary = arController.GetTickets();
                List<int> sortedARList = new List<int>();
                foreach (KeyValuePair<int, string> kv in ARDictionary)
                {
                    sortedARList.Add(kv.Key);
                }
                sortedARList.Sort();
                sortedARList.Reverse();
                ARList.DataSource = sortedARList;
                ARList.DataBind();
                ARList.Items.Insert(0, " ");
                ARList.AutoPostBack = true;
            }
        }

enter image description here

4 个答案:

答案 0 :(得分:2)

如果您只是希望能够重用代码,请在项目中为实用程序方法添加一个类,并将其转储到那里以供两个页面使用。

如果您正在尝试重用代码和关联的UI,请查看允许您执行此操作的用户控件(ascx文件)。

目前尚不清楚哪个问题适合您。

答案 1 :(得分:2)

在TicketExtractionWeb中,创建一个BasePage类。

BasePage.cs:

public class BasePage : System.Web.UI.Page
{
    // Add methods that are used on all your pages in here.

    protected DateTime GetCurrentDate()
    {
        return DateTime.Now;
    }
}

一个页面(我们称之为MyPage):

public class MyPage : BasePage
{
    protected Page_Load(object sender, EventArgs e)
    {
        var currentDate = this.GetCurrentDate();
    }
}

因此,当您创建另一个aspx页面时,它将默认为:

public class MyNewPage : System.Web.UI.Page
{
    // ...
}

只需将: System.Web.UI.Page更改为: BasePage

即可

答案 2 :(得分:1)

您应该能够从单个页面继承以重用代码。

aspx文件的顶部:

<%@ Page Language="C#" AutoEventWireup="true" Inherits="MyNamespace.CommonCode" %>

答案 3 :(得分:0)

如果您想重复使用html,请使用用户控制文件( .ascx ),这可以多次重复使用

when do you need .ascx files and how would you use them?