Обработка исключений в WebForms - PullRequest
1 голос
/ 30 ноября 2011

У меня есть веб-форма с формой просмотра

<asp:FormView ID="formViewBrouwers" runat="server" AllowPaging="True" 
        DataKeyNames="BrouwerNr" DataSourceID="brouwerDataSource" 
        onitemupdated="formViewBrouwers_ItemUpdated" 
        onitemupdating="formViewBrouwers_ItemUpdating" 
        oniteminserted="formViewBrouwers_ItemInserted" 
        oniteminserting="formViewBrouwers_ItemInserting">
        <EditItemTemplate>
            BrouwerNr:
            <asp:Label ID="BrouwerNrLabel1" runat="server" 
                Text='<%# Eval("BrouwerNr") %>' />
            <br />
            BrNaam:
            <asp:TextBox ID="BrNaamTextBox" runat="server" Text='<%# Bind("BrNaam") %>' />
            <br />
            Adres:
            <asp:TextBox ID="AdresTextBox" runat="server" Text='<%# Bind("Adres") %>' />
            <br />
            Postcode:
            <asp:TextBox ID="PostcodeTextBox" runat="server" 
                Text='<%# Bind("Postcode") %>' />
            <br />
            Gemeente:
            <asp:TextBox ID="GemeenteTextBox" runat="server" 
                Text='<%# Bind("Gemeente") %>' />
            <br />
            Omzet:
            <asp:TextBox ID="OmzetTextBox" runat="server" Text='<%# Bind("Omzet") %>' />
            <br />
            Status:
            <asp:TextBox ID="StatusTextBox" runat="server" Text='<%# Bind("Status") %>' />
            <br />
            <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" 
                CommandName="Update" Text="Update" />
            &nbsp;<asp:LinkButton ID="UpdateCancelButton" runat="server" 
                CausesValidation="False" CommandName="Cancel" Text="Cancel" />
        </EditItemTemplate>
        <InsertItemTemplate>
            BrNaam:
            <asp:TextBox ID="BrNaamTextBox" runat="server" Text='<%# Bind("BrNaam") %>' />
            <br />
            Adres:
            <asp:TextBox ID="AdresTextBox" runat="server" Text='<%# Bind("Adres") %>' />
            <br />
            Postcode:
            <asp:TextBox ID="PostcodeTextBox" runat="server" 
                Text='<%# Bind("Postcode") %>' />
            <br />
            Gemeente:
            <asp:TextBox ID="GemeenteTextBox" runat="server" 
                Text='<%# Bind("Gemeente") %>' />
            <br />
            Omzet:
            <asp:TextBox ID="OmzetTextBox" runat="server" Text='<%# Bind("Omzet") %>' />
            <br />
            Status:
            <asp:TextBox ID="StatusTextBox" runat="server" Text='<%# Bind("Status") %>' />
            <br />
            <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" 
                CommandName="Insert" Text="Insert" />
            &nbsp;<asp:LinkButton ID="InsertCancelButton" runat="server" 
                CausesValidation="False" CommandName="Cancel" Text="Cancel" />
        </InsertItemTemplate>
        <ItemTemplate>
            BrouwerNr:
            <asp:Label ID="BrouwerNrLabel" runat="server" Text='<%# Eval("BrouwerNr") %>' />
            <br />
            BrNaam:
            <asp:Label ID="BrNaamLabel" runat="server" Text='<%# Bind("BrNaam") %>' />
            <br />
            Adres:
            <asp:Label ID="AdresLabel" runat="server" Text='<%# Bind("Adres") %>' />
            <br />
            Postcode:
            <asp:Label ID="PostcodeLabel" runat="server" Text='<%# Bind("Postcode") %>' />
            <br />
            Gemeente:
            <asp:Label ID="GemeenteLabel" runat="server" Text='<%# Bind("Gemeente") %>' />
            <br />
            Omzet:
            <asp:Label ID="OmzetLabel" runat="server" Text='<%# Bind("Omzet") %>' />
            <br />
            Status:
            <asp:Label ID="StatusLabel" runat="server" Text='<%# Bind("Status") %>' />
            <br />
            <asp:LinkButton ID="EditButton" runat="server" CausesValidation="False" 
                CommandName="Edit" Text="Edit" />
            &nbsp;<asp:LinkButton ID="DeleteButton" runat="server" CausesValidation="False" 
                CommandName="Delete" Text="Delete" />
            &nbsp;<asp:LinkButton ID="NewButton" runat="server" CausesValidation="False" 
                CommandName="New" Text="New" />
        </ItemTemplate>
        <PagerSettings Mode="NextPreviousFirstLast" />
    </asp:FormView>

В моем свойстве Почтовый индекс я проверяю значение следующим образом:

private Int16 postcodeValue;

public Int16 Postcode
        {
            get
            {
                return postcodeValue;
            }
            set
            {
                if (value < 1000 || value > 9999)
                {
                    throw new Exception("Postcode moet tussen 1000 en 9999 liggen");     
                }
                else
                {
                    postcodeValue = value;

                }
            }
        }

Как я могу обработать исключение, которое я бросил?Если есть исключение, я хочу, чтобы появился ярлык со следующим исключением?

Ответы [ 3 ]

0 голосов
/ 30 ноября 2011

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

Эта статья может быть полезна: http://msdn.microsoft.com/en-us/library/ms173160(v=VS.100).aspx

0 голосов
/ 30 ноября 2011

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

Этот '^ [1-9] {1} [0-9] {3}? [A-Z] {2} $' будет правильным регулярным выражением для проверки почтового индекса Нидерландов.

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

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

0 голосов
/ 30 ноября 2011

Вы можете связать текстовое поле PostCode в InsertItemTemplate и EditItemTemplate с RangeValidator и иметь метку рядом с этим сообщением об ошибке при сбое условия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...