2015-01-15 1 views
1

Я столкнулся с довольно странной проблемой. Некоторые из моих веб-элементов управления пользователями приводят к тому, что родительская страница ссылается на него, чтобы получить ошибку 404 страницы.Веб-пользовательский контроль Причина страницы не найдена

Вот как я зарегистрировать его на странице .aspx:

<%@ Register TagPrefix="uc" TagName="DonationList" 
Src="~/Controls/Donation/DonationList.ascx" %> 

И строки, в которой пользовательский элемент управления объявлена ​​на той же странице ASPX:

<uc:DonationList ID="seenDonationListUC" runat="server" SeenInformation="Seen" /> 

Если я удалю выше line, я больше не получаю страницу с ошибкой 404.

Это небольшой фрагмент кода класса управления пользователя:

public partial class DonationList : System.Web.UI.UserControl 
{ 
    public enum Seen 
    { 
     Unspecified = 0, 
     Seen = 1, 
     NotSeen = 2 
    } 
    public Seen SeenInformation 
    { 
     get 
     { 
      int temp = seenInformationHF.Value == "" ? 0 : Convert.ToInt32(seenInformationHF.Value); 
      result = (Seen) temp; 
      return result; 
     } 
     ..... 

Любая идея о возможных причинах этого?

+0

Вы уверены, что атрибут src прав? – Abbath

+0

@Abbath Да, очень уверен в этом. Проверено письмо по почте, в каждом конкретном случае. –

+1

Тогда единственное, что я могу придумать, это то, что на usercontrol существует некоторая ошибка, которая может вызвать перенаправление на страницу с ошибкой. Можете ли вы попробовать заменить 'SeenInformation =" Seen "' на 'SeenInformation =" 0 "' и тип 'public Seen SeenInformation' для int? – Abbath

ответ

2

Название вашего перечисления и последующего значения перечисления оба одинаковы «Виден». Попробуйте изменить имя перечисления на что-то вроде SeenOptions. Например,

public enum SeenOptions 
{ 
    Unspecified = 0, 
    Seen = 1, 
    NotSeen = 2 
} 

В этом случае ваш класс SeenInformation будет выглядеть,

public SeenOptions SeenInformation 
{ 
    get 
    { 
     int temp = seenInformationHF.Value == "" ? 0 : Convert.ToInt32(seenInformationHF.Value); 
     result = (Seen) temp; 
    } 
    ..... 

И, наконец, ваша линия управления пользователя на ASPX странице будет такой же, как и раньше.

<uc:DonationList ID="seenDonationListUC" runat="server" SeenInformation="Seen" /> 

Я надеюсь, что это исправит вашу проблему.

+0

Ну, это не проблема на самом деле. Но переименование этого старого кода в соответствии с вашим соглашением об именах - блестящая идея. Проблема в том, что у меня есть enum, объявленный в другом классе CommonReference. Что-то вроде, public CommonReference.SeenOptions SeenInformation {..} Но это работало все время. Во всяком случае проблема решена одним способом. –

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