我还是ASP.NET的新手,所以如果答案很明显,请原谅我。
我们当前的项目有EnumDropDownLists显示模型成员的信息:
@Html.EnumDropDownListFor(model => model.PeoplePerHousehold, "Make a selection", htmlAttributes: new { @class = "form-control ep-variable"})
上面的代码显示了一个下拉菜单设置为"进行选择"默认情况下," 1"通过" 5 +"。
我尝试做的是将这些值显示为不是下拉列表,而是显示一系列单选按钮(每个按钮都有一个单选按钮)。
我正在尝试使用foreach循环来创建重复的HTML代码:
@foreach (var item in Model.PeoplePerHousehold) // Error is here
{
<label class="radio">
<input type="radio" data-toggle="radio" name="radPeople" value="none" checked />
<strong class="radio-circle">
@item
</strong>
</label>
}
...但是Visual Studio会抛出错误说明:
&#39; lambda表达&#39;不包含&#39; Get Enumerator&#39;。
的公开定义
我已经看到了这个错误以及许多方法,但没有一个解决了我的问题。
正在使用的模型的代码(@model EnergyWeb.Models.EnergyProfileViewModel)如下:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using EnergyWeb.DAL;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
namespace EnergyWeb.Models
{
public class EnergyProfileViewModel
{
public string Postcode { get; private set; }
[Display(Name = "Your suburb")]
public string SuburbName { get; private set; }
public virtual Suburb Suburb { get; set; }
public int SuburbId { get; set; }
[Display(Name = "People?")]
public PeoplePerHousehold? PeoplePerHousehold { get; set;}
public int PeopleNumSelected { get; set; }
etc...
我真的很感激任何帮助。
提前非常感谢你!
答案 0 :(得分:0)
通过使用@ Html.EnumDropDownListFor(),我假设PeoplePerHousehold是一种Enum。
正如@manish在评论中所述,你无法预见非集合对象,而Enum不是一个集合,因此你无法预见它。
如果你想在枚举上产生单选按钮,请看一下这个答案(文章):
MVC4 enum and radio button list
http://www.codeproject.com/Articles/404022/MVC-Enum-RadioButtonList-Helper
答案 1 :(得分:0)
确定。我不确定这是否会在我的情况之外适用,或解决方案有多好,但为了解决我的问题,我做了以下事情:
我查看了原始下拉版本的来源,看到生成的HTML是这样的:
<select class="form-control ep-variable" id="idPeoplePerHousehold" name="PeoplePerHousehold">
<option selected="selected" value="">Make a selection</option>
<option value="0">1</option>
<option value="1">2</option>
<option value="2">3</option>
<option value="3">4</option>
<option value="4">5</option>
<option value="5">6</option>
<option value="6">7+</option>
</select>
所以,要把它转换成单选按钮我做了:
@Html.RadioButtonFor(model => model.PeoplePerHousehold, 0, htmlAttributes: new { @class = "form-control ep-variable" })
@Html.RadioButtonFor(model => model.PeoplePerHousehold, 1, htmlAttributes: new { @class = "form-control ep-variable" })
@Html.RadioButtonFor(model => model.PeoplePerHousehold, 2, htmlAttributes: new { @class = "form-control ep-variable" })
等。对于每个值。
之后,剩下的就是更改jQuery脚本以获取单选按钮值而不是下拉值:
'peoplePerHousehold': $("[name='PeoplePerHousehold']:checked").val(),
它有效!谢谢大家的帮助!
我仍然不确定的一件事是下拉列知道如何知道这么多选项...