Надеюсь, у вас все хорошо, и спасибо за помощь.
У меня есть 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