2014-11-18 2 views
0

Я пытаюсь переместить функцию UploadFile на BasePage, чтобы я мог повторно использовать ее на многих страницах aspx. Мой исходный код выглядит следующим образом:Как определить функцию UploadFile на BasePage, чтобы ее можно было повторно использовать на многих страницах aspx

upload.aspx.cs

public partial class upload : CodeBasePage 
{ 

protected void uploadFile_Click(object sender, EventArgs e) 
{ 
    if (UploadImages.HasFiles) 
    { 
    try 
    { 
    foreach (HttpPostedFile uploadedFile in UploadImages.PostedFiles) 
    { 
    //Upload stuff; 
    } 
    ... 

upload.aspx

<asp:FileUpload runat="server" ID="UploadImages" /> 
<asp:Button runat="server" ID="uploadedFile" Text="Upload" OnClick="uploadFile_Click"/> 

До сих пор так хорошо. Код работает нормально.

Теперь я хочу переместить uploadFile_Click в BasePage (CodeBasePage), чтобы я мог повторно использовать его на многих страницах aspx.

я переехал следующее в CodeBasePage и объявил переменные:

CodeBasePage.cs

public Button uploadedFile; 
public FileUpload UploadImages; 

protected void uploadFile_Click(object sender, EventArgs e) 
{ 
    if (UploadImages.HasFiles) 
    { 
    try 
    { 
    foreach (HttpPostedFile uploadedFile in UploadImages.PostedFiles) 
    { 
    //Upload stuff; 
    } 
    ... 

Но, видимо, я делаю что-то неправильно. Когда я нажимаю кнопку «Загрузить» на странице aspx, я получаю сообщение об ошибке «Ссылка объекта не установлена ​​на экземпляр объекта».

Line 292:   if (UploadImages.HasFiles) 

Любой совет будет оценен по достоинству. Я думаю, что проблема заключается в том, как отправлять переменные upload с страницы upload.aspx в CodeBasePage.cs.

ответ

0

Таким образом, вам не нужен конкретный экземпляр FileUpload в вашем классе CodeBasePage.

Что вы имеете

public FileUpload UploadImages 

только ссылка. Вы должны установить его в конкретный экземпляр либо в конструкторе, либо позже вручную.

Для upload.aspx страницы вашего конкретного экземпляра является

<asp:FileUpload runat="server" ID="UploadImages" /> 
+0

Любые подробнее/ссылки о том, как добиться этого ... Я до сих пор в процессе обучения! – Gloria

+1

Для этого конкретного элемента управления я бы создал пользовательский элемент многократного использования вместо того, чтобы добавлять его на базовую страницу, вы можете найти более подробную информацию в этой статье [http://msdn.microsoft.com/en-us/library/3457w616%28v = VS.90% 29.aspx). Чтобы получить представление о том, что входит в базовую страницу, есть много статей, которые вы можете найти с помощью простого поиска в Google. (Поздний ответ, но я надеюсь, что это поможет) – solidrevolution

+0

На самом деле я получил ту же идею, что использование User Control - лучший вариант для этого случая. Спасибо за отзыв. – Gloria

Смежные вопросы