Member 14892730 Ответов: 1

Как я могу показать правильный pageerror.выход aspx, который после того, как я вошел двумя входами, таких как 7 и 0?


Могу ли я спросить о том, почему мой вывод для PageError.aspx не совпадает с правильным выводом ниже, пожалуйста?:

Правильный вывод для PageError.aspx после того, как я ввел два входа, таких как 7 и 0, используя только метод pageerror (не могу использовать метод try catch):

Извиняюсь. На этой странице встречается одна ошибка: попытка деления на ноль.

Я все еще не могу получить этот правильный вывод, как упоминалось выше, после того, как я несколько раз гуглил и примерял исходный код, вывод PageError.aspx все еще отображает входные данные для выполнения деления с 2 пробелами. Не могли бы вы все объяснить мои ошибки, пожалуйста?

Что я уже пробовал:

Я вставляю некоторые из этих проблем кода здесь, как показано ниже:

Для PageError.aspx-файл,

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="PageError.aspx.cs" Inherits="WebApplication1.PageError" Trace="true" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Error Handling</title>  
    
</head>
<body>
    <form id="form1" runat="server">
<div style="text-align:center">
<p style="width:60%; padding:30px 20px 30px 20px; border:solid 3px black">
    <asp:TextBox ID="TextBox1" runat="server" Height="43px" Width="66px" 
        Font-Bold="True" Font-Names="Comic Sans MS" Font-Size="X-Large"></asp:TextBox>
  <img alt="" src="images/Divide.jpg" style="height: 39px; width: 65px" /> 
    <asp:TextBox ID="TextBox2" runat="server" Height="43px" Width="66px" 
        Font-Bold="True" Font-Names="Comic Sans MS" Font-Size="X-Large"></asp:TextBox>
 <asp:ImageButton ID="EqualButton" runat="server" Height="44px" 
        ImageUrl="~/images/EqualButton.jpg" Width="50px" 
        onclick="EqualButton_Click" />
 <asp:Label ID="Label1" runat="server" Font-Bold="True" 
        Font-Names="Comic Sans MS" Font-Size="XX-Large" ForeColor="Blue" Text="?"></asp:Label>
<br />
    <asp:Label ID="lblMessage" runat="server" Text="" Font-Names="Arial" ForeColor="Red"></asp:Label>
</p>
</div>
    </form>
</body></html>


Для PageError.aspx-файл.в CS,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication1
{
    public partial class PageError : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void EqualButton_Click(object sender, ImageClickEventArgs e)
        {
            double dblAns = Convert.ToDouble(TextBox1.Text) / Convert.ToDouble(TextBox2.Text);

            Label1.Text = dblAns.ToString();
        }

        void Page_Error()
        {
           Response.Write("Sorry <br /><br />" + "One error is encountered in this page: " + Server.GetLastError().Message + "");

           Server.ClearError(); //comment this line to see the difference  
        }

        //protected void Page_Error(object sender, EventArgs e)
        //{
        //    Response.Write("Error: " + Server.GetLastError().Message + "");
        //    Server.ClearError();
        //}

        //    void Page_Error()
        //    {
        //        if(Server.GetLastError() != null)
        //        { 
        //           Exception objError = Server.GetLastError().GetBaseException();

        //           string strError = "<p><h1>Sorry<br /><br />" +
        //                             "One error is encountered in this page: " + objError.Message.ToString() + "</h1></p>";

        //           Response.Write(strError.ToString());
        //        }

        //        // Clear the error from the server.
        //        // Server.ClearError();
        //    }
        //}
    }
}


Для Веб-Конфигурации,

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  https://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  
  <system.web>
    <compilation debug="true" targetFramework="4.6.1"/>
    <httpRuntime targetFramework="4.6.1"/>
           <!--<customErrors mode="On" defaultRedirect="ErrorPages/PageError.htm">
                 <error statusCode="404" redirect="ErrorPages/FileNotFound.htm"/>
           </customErrors>-->
  </system.web>
  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:default /nowarn:1659;1699;1701"/>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:default /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
    </compilers>
  </system.codedom>
  <system.webServer>
    <httpErrors errorMode="Custom" defaultResponseMode="File">
      <clear/>
      <error statusCode="404" path="ErrorPages\FileNotFound.htm"/>
    </httpErrors>
  </system.webServer>
</configuration>

1 Ответов

Рейтинг:
7

Richard MacCutchan

double dblAns = Convert.ToDouble(TextBox1.Text) / Convert.ToDouble(TextBox2.Text);

Вы не должны использовать такой код, так как он позволяет вводить в вашу программу любой мусор. Захватите каждое поле отдельно и проверьте, что введенные значения действительны, прежде чем делать что-либо еще. Что-то вроде:
double dividend;
if (!Double.TryParse(TextBox1.Text, out dividend))
{
    // deal with invalid input
}
double divisor;
if (!Double.TryParse(TextBox2.Text, out divisor))
{
    // deal with invalid input
}
if (divisor == 0)
{
    // deal with divide by zero
}
double quotient = dividend / divisor;


[no name]

Хорошо. Я понял. Спасибо.