Como criar algumas caixas de rádio em ASP.NET MVC?
-
21-08-2019 - |
Pergunta
sim :( simples pergunta * rubor *
Vamos imaginar que eu tenho a seguinte enumeração: -
string[] languages = new string[]
{
"en (uk)", // English (colour)
"en (us)", // English (color)
"fr", // French
"es" // Spanish
};
ViewData["Languages"] = languages;
ViewData["UserLanguage"] = "en (uk)";
Armado com isso, como eu iria exibir um botão de rádio na View? É a única maneira de fazer isso para enumerar todos os valores de linguagem e tornar a radiobox?
por exemplo. pseduo-código ...
<% foreach(string language in ViewData["Languages"] as string[])
{
response.write Html.RadioBox(... not sure what to set in here ...)
}%>
aplausos!
Solução
rápido e sujo:
<% foreach(string language in ViewData["Languages"] as string[]) { %>
<%= Html.RadioBox(language,language,language == ViewData["UserLanguage"].ToString()) %>
<% } %>
O problema é que você colocar de cordas mágicas em que viewdata. O que eu gostaria de fazer é algo como isto:
-
Crie uma classe: UserForm
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) }; } } }
-
o ponto de vista deve ser fortemente digitado e ser do tipo: UserForm então você poderia torná-lo como:
<%= Html.RadioButtonList("userLanguages",ViewData.Model.UserLanguages) %>
-
A partir do controlador de você:
return View(new UserForm(listOfLanguages, selectedLanguage));
HTH.
EDIT:
OK, achei - o RadioButtonList
é um método de extensão no namespace Microsoft.Web.Mvc
(os MVCFutures projetar) - você pode obtê-lo aqui: MVCFutures