ASP.NET访问下拉列表之外的下拉值?

时间:2014-08-13 03:16:34

标签: c# html asp.net razor

我还是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...

我真的很感激任何帮助。

提前非常感谢你!

2 个答案:

答案 0 :(得分:0)

通过使用@ Html.EnumDropDownListFor(),我假设PeoplePerHousehold是一种Enum。

正如@manish在评论中所述,你无法预见非集合对象,而Enum不是一个集合,因此你无法预见它。

如果你想在枚举上产生单选按钮,请看一下这个答案(文章):

MVC4 enum and radio button list

http://romikoderbynew.com/2012/02/23/asp-net-mvc-rendering-enum-dropdownlists-radio-buttons-and-listboxes/

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(),

它有效!谢谢大家的帮助!

我仍然不确定的一件事是下拉列知道如何知道这么多选项...