System.ArgumentException Не веб-исключение.Источник исключения (имя приложения или объекта): System.Web.Page EnableEventValidation = "true" - PullRequest
0 голосов
/ 12 сентября 2018

Надеюсь, у вас все хорошо, и спасибо за помощь.

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

Default.aspx:

<%@ Page Language="C#" Inherits="Challenge12Proj.Default" %>
<!DOCTYPE html>
<html>
<head runat="server">
	<title>Default</title>
</head>
<body>
	<form id="form1" runat="server">
        <h3>Your note taking preferences</h3>
        <p><asp:RadioButton id="rdbPencil" Text="Pencil" runat="server" GroupName="NoteGroup" /></p>
        <p><asp:RadioButton id="rdbPen" Text="Pen" runat="server" GroupName="NoteGroup" /></p>
        <p><asp:RadioButton id="rdbPhone" Text="Phone" runat="server" GroupName="NoteGroup" /></p>
        <p><asp:RadioButton id="rdbTablet" Text="Tablet" runat="server" GroupName="NoteGroup" /></p>
        <p><asp:Button id="btnOk" runat="server" Text="Ok" OnClick="btnOkClicked" /></p>
        <br/>
        <p><asp:Image id="imgResult" runat="server" ImageUrl="" /></p>
        <p><asp:Label id="lblResult" runat="server" Text=""/></p>    
	</form>
</body>
</html>

Default.aspx.cs:

using System;
using System.Web;
using System.Web.UI;

namespace Challenge12Proj
{

    public partial class Default : System.Web.UI.Page
    {
        public void btnOkClicked(object sender, EventArgs args)
        {
            lblResult.Text = (rdbPen.Checked) ? "You selected Pen"
                : (rdbPencil.Checked) ? "You selected Pencil"
                : (rdbPhone.Checked) ? "You selected Phone" 
                : (rdbTablet.Checked) ? "You selected Tablet" : "Please select an option";
            imgResult.ImageUrl = (rdbPen.Checked) ? "/images/pen_PNG.png"
                : (rdbPencil.Checked) ? "/images/pencil_PNG.png"
                : (rdbPhone.Checked) ? "/images/smartphone_PNG.png"
                : (rdbTablet.Checked) ? "/images/tablet_PNG.png" : "";
            imgResult.Width = (rdbPen.Checked) ? new System.Web.UI.WebControls.Unit("450px")
                : (rdbPencil.Checked) ? new System.Web.UI.WebControls.Unit("250px")
                : (rdbPhone.Checked) ? new System.Web.UI.WebControls.Unit("250px")
                : (rdbTablet.Checked) ? new System.Web.UI.WebControls.Unit("300px") 
                : new System.Web.UI.WebControls.Unit("");
            imgResult.Height = (rdbPen.Checked) ? new System.Web.UI.WebControls.Unit("150px")
                : (rdbPencil.Checked) ? new System.Web.UI.WebControls.Unit("200px")
                : (rdbPhone.Checked) ? new System.Web.UI.WebControls.Unit("350px")
                : (rdbTablet.Checked) ? new System.Web.UI.WebControls.Unit("250px")
                : new System.Web.UI.WebControls.Unit("");

        }
    }
}

Очень хорошо работает, когда выбрана любая радиокнопка, но когда никого не выбрано, отображается сообщение об ошибке.

Я видел ответ, который я должен удалить по:

Отключить проверку событий (плохая идея, потому что вы теряете немного безопасности, которая идет с очень маленькой стоимостью).

Итак, если это плохая идея, почему это хороший ответ?

Ссылка: Неверный обратный вызов или обратный вызов ...

Как решить эту проблему, используя eventValidation = "true"?

Как это работает для VS2010 (из видеоурока)?

System.ArgumentException

Неверный аргумент обратной передачи или обратного вызова. Проверка события включена с использованием в конфигурации или <% @ Page EnableEventValidation = "true"%> на странице. В целях безопасности эта функция проверяет, что аргументы для событий обратной передачи или обратного вызова исходят от серверного элемента управления, который первоначально их представил. Если данные верны и ожидаемы, используйте метод ClientScriptManager.RegisterForEventValidation, чтобы зарегистрировать данные обратной передачи или обратного вызова для проверки.

Описание: HTTP 500. Запрос на обработку ошибки.

Подробности: Исключение не в сети. Источник исключения (имя приложения или объекта): System.Web.

Трассировка стека исключений:

at System.Web.UI.ClientScriptManager.ValidateEvent (System.String uniqueId, System.String argument) [0x00060] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/System.Web/System.Web.UI/ClientScriptManager.cs:521 
  at System.Web.UI.Control.ValidateEvent (System.String uniqueId, System.String argument) [0x00012] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/System.Web/System.Web.UI/Control.cs:2029 
  at System.Web.UI.WebControls.RadioButton.LoadPostData (System.String postDataKey, System.Collections.Specialized.NameValueCollection postCollection) [0x0001a] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/System.Web/System.Web.UI.WebControls/RadioButton.cs:118 
  at System.Web.UI.WebControls.RadioButton.System.Web.UI.IPostBackDataHandler.LoadPostData (System.String postDataKey, System.Collections.Specialized.NameValueCollection postCollection) [0x00000] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/System.Web/System.Web.UI.WebControls/RadioButton.cs:135 
  at System.Web.UI.Page.ProcessPostData (System.Collections.Specialized.NameValueCollection data, System.Boolean second) [0x001c3] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/System.Web/System.Web.UI/Page.cs:1153 
  at System.Web.UI.Page.ProcessPostData () [0x00025] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/System.Web/System.Web.UI/Page.cs:1360 
  at System.Web.UI.Page.InternalProcessRequest () [0x001a1] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/System.Web/System.Web.UI/Page.cs:1337 
  at System.Web.UI.Page.ProcessRequest (System.Web.HttpContext context) [0x0005f] in /Users/builder/jenkins/workspace/build-package-osx-mono/2018-02/external/bockbuild/builds/mono-x64/mcs/class/System.Web/System.Web.UI/Page.cs:1190 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...