Ошибка в ASP.NET website: 'itemimage1' имеет значение selectedvalue, которое является недопустимым, поскольку оно не существует в списке элементов. Имя параметра: значение
Теперь я узнаю все о asp.net и опробовать его основные инструменты. Я создал простую форму, в которую администратор может загружать изображения для веб-сайта. Проблема в том, что он выдает мне такую ошибку: 'itemImage1' имеет SelectedValue, которое является недопустимым, поскольку оно не существует в списке элементов. Имя параметра: value.
Теперь, чтобы лучше понять, что я пытаюсь сделать. Вот изображение формы, которую я создал на своем сайте.
(Пожалуйста, проверьте изображение здесь для формы по этой ссылке: )[^]
Как вы можете видеть, у администратора есть выбор, хочет ли он загрузить изображение для гитарных или басовых продуктов. Для этого примера я выбрал гитарный радиобуттон. Тогда он будет генерировать имеющихся изображений в dropdownbox, по пункту рис1 и Рис2 поз.
Теперь вот в чем проблема, допустим, я ошибся в выборе кнопки гитары и хотел выбрать кнопку баса. Поэтому я просто нажал кнопку Bass, а затем она выдала мне ошибку исключения, о которой я упоминал ранее.
Пожалуйста, помогите мне решить эту проблему, я все еще новичок в кодировании и хотел бы учиться у вас, ребята. Я включу коды, которые я написал.
Что я уже пробовал:
Вот код для файла aspx. cs:
protected void Page_Load(object sender, EventArgs e) { string itemselectedValue1 = itemImage1.SelectedValue; ShowItemImages1(); itemImage1.SelectedValue = itemselectedValue1; string itemselectedValue2 = itemImage2.SelectedValue; ShowItemImages2(); itemImage2.SelectedValue = itemselectedValue2; } private void ShowItemImages1() { if (itemType1.Checked) { string[] images = Directory.GetFiles(Server.MapPath("~/Images/Brands/String Instrument Items/Guitar/")); ArrayList imageList = new ArrayList(); foreach (string image in images) { string imageName = image.Substring(image.LastIndexOf(@"\") + 1); imageList.Add(imageName); } itemImage1.DataSource = imageList; itemImage1.DataBind(); } else if (itemType2.Checked) { string[] images = Directory.GetFiles(Server.MapPath("~/Images/Brands/String Instrument Items/Bass/")); ArrayList imageList = new ArrayList(); foreach (string image in images) { string imageName = image.Substring(image.LastIndexOf(@"\") + 1); imageList.Add(imageName); } itemImage1.DataSource = imageList; itemImage1.DataBind(); } } private void ShowItemImages2() { if (itemType1.Checked) { string[] images = Directory.GetFiles(Server.MapPath("~/Images/Brands/String Instrument Items/Guitar/")); ArrayList imageList = new ArrayList(); foreach (string image in images) { string imageName = image.Substring(image.LastIndexOf(@"\") + 1); imageList.Add(imageName); } itemImage2.DataSource = imageList; itemImage2.DataBind(); } else if (itemType2.Checked) { string[] images = Directory.GetFiles(Server.MapPath("~/Images/Brands/String Instrument Items/Bass/")); ArrayList imageList = new ArrayList(); foreach (string image in images) { string imageName = image.Substring(image.LastIndexOf(@"\") + 1); imageList.Add(imageName); } itemImage2.DataSource = imageList; itemImage2.DataBind(); } }
Вот также файл aspx(если это необходимо):
<table cellspacing="15" class="brandsTable"> <tr> <td style="width: 160px; height: 37px;"> Item Type:</td> <td style="height: 37px"> <asp:RadioButton ID="itemType1" runat="server" Text="Guitar" AutoPostBack="True" GroupName="ItemType"/> <asp:RadioButton ID="itemType2" runat="server" Text="Bass" AutoPostBack="True" GroupName="ItemType"/> </td> </tr> <tr> <td style="width: 160px; height: 37px;"> Item Brand:</td> <td style="height: 37px"> <asp:TextBox ID="itemBrand" runat="server" BackColor="#FFFF66" BorderColor="Black" BorderWidth="1px" Height="20px" Width="300px"></asp:TextBox> </td> </tr> <tr> <td style="width: 160px; height: 37px;"> Item Model:</td> <td style="height: 37px"> <asp:TextBox ID="itemModel" runat="server" BackColor="#FFFF66" BorderColor="Black" BorderWidth="1px" Height="20px" Width="300px"></asp:TextBox> </td> </tr> <tr> <td style="width: 160px; height: 37px;"> Item Price:</td> <td style="height: 37px"> <asp:TextBox ID="itemPrice" runat="server" BackColor="#FFFF66" BorderColor="Black" BorderWidth="1px" Height="20px" Width="300px"></asp:TextBox> </td> </tr> <tr> <td style="width: 160px; height: 37px;"> Item Image1:</td> <td style="height: 37px"> <asp:DropDownList ID="itemImage1" runat="server" Width="300px"> </asp:DropDownList> <br /> <asp:FileUpload ID="itemFileUpload1" runat="server" /> <asp:Button ID="itemUploadImage1" runat="server" Text="Upload Image" OnClick="itemUploadImage1_Click"/> </td> </tr> <tr> <td style="width: 160px; height: 37px;"> Item Image2:</td> <td style="height: 37px"> <asp:DropDownList ID="itemImage2" runat="server" Width="300px"></asp:DropDownList> <br /> <asp:FileUpload ID="itemFileUpload2" runat="server" /> <asp:Button ID="itemUploadImage2" runat="server" Text="Upload Image" OnClick="itemUploadImage2_Click"/> </td> </tr>
Вот также исходная ошибка и трассировка стека:
Source Error: Line 20: itemselectedValue1 = itemImage1.SelectedValue; Line 21: ShowItemImages1(); Line 22: itemImage1.SelectedValue = itemselectedValue1; Line 23: Line 24: itemselectedValue2 = itemImage2.SelectedValue; Source File: c:\Users\User1\Documents\Visual Studio 2015\WebSites\MusicStore\Pages\CreateBrands.aspx.cs Line: 22 Stack Trace: [ArgumentOutOfRangeException: 'itemImage1' has a SelectedValue which is invalid because it does not exist in the list of items. Parameter name: value] System.Web.UI.WebControls.ListControl.set_SelectedValue(String value) +9703262 Pages_CreateBrands.Page_Load(Object sender, EventArgs e) in c:\Users\User1\Documents\Visual Studio 2015\WebSites\MusicStore\Pages\CreateBrands.aspx.cs:22 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51 System.Web.UI.Control.OnLoad(EventArgs e) +95 System.Web.UI.Control.LoadRecursive() +59 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +678