2012-06-04 44 views
0

我有一個供應商,其結構提供像CS文件如下:有沒有辦法從一個mvc3控制器中從system.web.ui.page繼承的類中調用一個函數?

public partial class Test : System.Web.UI.Page 
{ 
    public void InsertSignature() 
    { 
     Response.Write("ASDFASDFAF#WRRASDFCAERASDCDSAF"); 
    } 
} 

我試圖用下面的代碼

MySample sample = new Test(); 

sample.InsertSignature(); 

我使用InsertSignature功能的MVC 3應用程序'獲取以下HttpException:「在這種情況下,響應不可用。」無論如何,這可以用來修改供應商交付的產品。我知道有辦法通過修改文件來完成這項工作,但如果可能的話,最好避免這樣做。

在此先感謝。

+0

哪裏是實例化頁面對象 - 控制器或視圖的代碼?是否可以修改或移動項目中的代碼? –

+0

我想從控制器實例化代碼。我確實有這個文件和源文件,但是它是供應商交付的,我的僱主要求我不要接觸源代碼,以便將來的更新可以是一個簡單的文件替換。 –

+0

供應商代碼是否在相同(主)線程中執行,並且它是否可以訪問HTTP'Response'對象? –

回答

1

這似乎是一個已知的問題(Response is not available in this context

只需更換

Response.Write("ASDFASDFAF#WRRASDFCAERASDCDSAF"); 

HttpContext.Current.Response.Write("ASDFASDFAF#WRRASDFCAERASDCDSAF"); 

,這將做的伎倆。這似乎不是一個很大的變化。

UPDATE:如果您希望防止代碼在將來更新時被重寫,請重命名方法 - 例如,從InsertSignature()到InsertSig()。如果該文件正在更新供應商的版本,它將無法編譯,並且將清楚原因是什麼。

+0

我同意這不是一個大變化。然而,這是一個變化,我被要求儘可能避免它。我目前看到的是它是不可避免的。 –

相關問題