【问题标题】:How to create a few radio boxes in ASP.NET MVC?如何在 ASP.NET MVC 中创建几个单选框?
【发布时间】:2011-02-06 17:25:05
【问题描述】:

是的 :( 简单的问题 * 脸红 *

假设我有以下枚举:-

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 ...)
}%>

干杯!

【问题讨论】:

  • 我更新了答案并添加了指向 MVCFutures 的链接。(RadioButtonList 方法所在的位置)

标签: asp.net-mvc radio-button


【解决方案1】:

又快又脏:

<% foreach(string language in ViewData["Languages"] as string[]) { %>
  <%= Html.RadioBox(language,language,language == ViewData["UserLanguage"].ToString()) %>
<% } %>

问题是您在该视图数据中分配了魔术字符串。我会做的是这样的:

  1. 创建一个类: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)
                          };
             }
         }
    }
    
  2. 视图应该是强类型的并且是类型:UserForm 那么你可以像这样渲染它:

    <%= Html.RadioButtonList("userLanguages",ViewData.Model.UserLanguages) %>
    
  3. 从控制器你会:

    return View(new UserForm(listOfLanguages, selectedLanguage));
    

HTH。

编辑: 好的,找到了——RadioButtonListMicrosoft.Web.Mvc 命名空间(MVCFutures 项目)中的扩展方法——你可以从这里得到它:MVCFutures

【讨论】:

  • AFAIK,Html.RadioButtonList 不再存在...你能确认一下吗?
  • 好吧,我还没有切换到 RTM,所以你可能是对的:| .我想知道原因是什么。
猜你喜欢
  • 2021-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2020-10-22
  • 1970-01-01
  • 2016-10-10
  • 2011-04-27
相关资源
最近更新 更多