Я думаю, что лучший способ сделать это - не беспокоиться о наличии переключателя для «Оба». Если он все равно скрыт, и вы никогда не хотите, чтобы пользователь взаимодействовал с ним, просто не размещайте его на своей странице. Не устанавливайте «Покупатель» или «Продавец» в выбранном (изначально), чтобы по умолчанию не было ни того, ни другого. Это позволит вам проверить свой код, если ни один из них не выбран, как ...
В вашей разметке:
<asp:RadioButtonList id="StatusRadioList" CssClass="radio-buttons" RepeatLayout="Flow" runat="server">
<asp:ListItem>Buyer</asp:ListItem>
<asp:ListItem>Seller</asp:ListItem>
</asp:RadioButtonList>
(обратите внимание, что я использую RepeatLayout = "Flow" - это говорит asp.net визуализировать разметку без использования таблиц для разметки - я думаю, намного приятнее)
В вашем файле кода есть обработчик нажатия кнопки, чтобы ответить пользователю, отправляющему форму - что-то вроде этого:
protected void OnFormSubmitClick(object sender, EventArgs e)
{
if (IsValid)
{
string status;
if (StatusRadioList.SelectedItem == null)
{
status = "Both";
}
else
{
status = StatusRadioList.SelectedValue;
}
// The rest of your code here
// ...
}
}
В приведенном выше примере я использовал SelectedValue RadioButtonList, чтобы получить строковое значение для «status», но вы также можете легко использовать SelectedItem или SelectedIndex, если это работает лучше для вас.
Кроме того, если вы хотите сократить код, вы можете использовать троичный вместо if / else - например, так:
string status = (StatusRadioList.SelectedItem == null)
? "Both"
: StatusRadioList.SelectedValue;