2015-12-01 56 views
0

如何以編程方式複製代碼背後的.aspx頁面?以編程方式複製代碼後面的.aspx文件

我知道如何使用File.Copy方法,但它不是我所需要的。 我正在做幫助系統。在這個幫助系統現在只有兩種類型(情況1,情況2)。我必須做一些功能來創建情境3,情境4,依此類推。

我可以使用一些類型,如情況1,情況2,依此類推。但問題是我需要所有頁面的不同URL。我不能只是做像Help.aspx?type=situation1, help.aspx?type=situation2這樣的東西。

它應該像Situation1.aspx, Situation2.aspx, Situation3.aspx。有人可以舉個例子嗎?

回答

2

你正在進行的想法是錯誤的。這裏有幾個原因:

  • 你怎麼會得到新的頁面到源代碼控制(您應該是使用)?

  • 如果您需要進行影響所有SituationX.aspx文件的更改,該怎麼辦?你必須去每個文件並單獨修復它們。

  • 如果用戶能夠以任何方式影響文件的內容,它也可能是一個安全漏洞。

一個更好的解決方案是使用路由。用戶請求的URL不一定必須映射到特定文件。這使開發人員可以更好地控制URL的外觀,創建"hackable" URL,這對於搜索引擎優化來說也很棒。告訴某人去並且從URL中刪除文件擴展名(用戶不需要知道或關心)也更容易。

添加到您的全局應用程序類(Global.asax中或的global.asax.cs)

void Application_Start(object sender, EventArgs e) 
{ 
    RegisterRoutes(RouteTable.Routes); 
} 

void RegisterRoutes(RouteCollection routes) 
{ 
    routes.MapPageRoute("", "Situation/{situationId}", "~/Situation.aspx"); 
} 

呼籲Situation.aspx一個Web表單。然後,它可以檢查URL以檢索用戶請求的情境頁面的ID。它可以從數據庫中有關特殊情況檢索數據:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if(!IsPostBack) 
    { 
     var id = Page.RouteData.Values["situationId"]; 
     var situation = Database.GetSituationById(id); 
     ShowSituationOnPage(situation); 
    } 
} 

然後,用戶訪問example.com/Situations/1和頁面可以獲取正確的情況,並顯示爲他們。

請參閱How to Define Routes For Web Forms ApplicationsHow to Access URL Parameters on a routed page,都在MSDN上。

+0

非常感謝您的建議,它會幫助我,但不是在這種情況下...我爲一個客戶做的,所以你可能知道客戶請求)))。無論如何,謝謝。 – Khazratbek

+0

@Khazratbek無論是否適合客戶都無所謂。如果他們告訴你他們希望如何實施,那麼就向他們解釋這是更好的方法。如果他們沒有告訴你如何實施它,那麼就去做吧。這是正確的方法。 – mason

+0

是的,我已經做到了:)謝謝)) – Khazratbek

相關問題