Как создать несколько радиобоксов в ASP.NET MVC?
-
21-08-2019 - |
Вопрос
да : ( простой вопрос * покраснеть *
Давайте представим, что у меня есть следующее перечисление:-
string[] languages = new string[]
{
"en (uk)", // English (colour)
"en (us)", // English (color)
"fr", // French
"es" // Spanish
};
ViewData["Languages"] = languages;
ViewData["UserLanguage"] = "en (uk)";
Вооружившись этим, как бы я отобразил переключатель в представлении?Является ли единственный способ сделать это перечислением всех языковых значений и визуализацией RadioBox?
например.псевдокод...
<% foreach(string language in ViewData["Languages"] as string[])
{
response.write Html.RadioBox(... not sure what to set in here ...)
}%>
ваше здоровье!
Решение
Быстро и грязно:
<% foreach(string language in ViewData["Languages"] as string[]) { %>
<%= Html.RadioBox(language,language,language == ViewData["UserLanguage"].ToString()) %>
<% } %>
Проблема в том, что у вас есть множество магических строк в этом viewdata.То, что я бы сделал, это что-то вроде этого:
Создайте класс:Пользовательская форма
class UserForm { IList<string> _languages; string _selectedL; public UserForm (IList<string> languages, string selectedLanguage) { _languages = languages; _selectedL = selectedLanguage; } IEnumerable<SelectedListItem> UserLanguages { get { return from l in _languages select new SelectedListItem { Text = l, Value = l, Selected = (l == _selectedL) }; } } }
представление должно быть строго типизированным и иметь тип :Пользовательская форма затем вы могли бы отобразить ее следующим образом :
<%= Html.RadioButtonList("userLanguages",ViewData.Model.UserLanguages) %>
С помощью контроллера вы бы :
return View(new UserForm(listOfLanguages, selectedLanguage));
ХТХ.
Редактировать:
Хорошо, нашел это - the RadioButtonList
является методом расширения в Microsoft.Web.Mvc
пространство имен (проект MVCFutures) - вы можете получить его отсюда : Будущее MVCFutures