填写mvc下拉列表的值

时间:2016-08-23 08:40:23

标签: c# asp.net asp.net-mvc

 @Html.DropDownListFor(x => x.Pets, new SelectList(ViewBag.Pets, "key", "value"), new { @class = "type1 newdrop" })

我是mvc开发的新手。使用上面的代码行,我得到的是下拉列表,但只有2作为值。

如何将下拉列表填入低于2的所有值,包括0?我希望所选项目为2

 ViewBag.Pets = Constants.MaxP.Where( x => x.Key == someId); // the someId is for sure one of the below key numbers

,其中

  public static Dictionary<int, int>   MaxP = new Dictionary<int, int>(){
                {12, 2}, {13, 2}, {14, 2}, {15, 2}, {16, 2}, {17, 2}, {18, 2}
            };

3 个答案:

答案 0 :(得分:0)

将您的字典变成SelectListItem的集合,如下所示:

int a = Constants.Maxp.FirstOrDefualt(x => x.Key == SomeID).Value;

List<SelectListItem> lst = new List<SelectListItem>();

for (int i = 0; i < a; i++)
{
    lst.Add(new SelectListItem(){
        Text = i.ToString(),
        Value = i.ToString()
    });
}

ViewBag.Pets = lst;

然后在你的视图中:

@Html.DropDownListFor(x => x.Pets, ViewBag.Pets, new { @class = "type1 newdrop" })

x.pets是与Key

匹配的ID

答案 1 :(得分:0)

var certainKey = 15;
var certainValue = 2;

使用dropdownlist

填充key less than certainKey所有项目
 ViewBag.Pets = Constants.MaxP.Where( x => x.Key < certainKey);

使用dropdownlist

填充value less than certainValue所有项目
 ViewBag.Pets = Constants.MaxP.Where( x => x.Value < certainValue);

使用dropdownlistkey equal with certainKey

的项目填充value less than certainValue
 ViewBag.Pets = Constants.MaxP.Where( x => x.Key == certainKey && x.Value < certainValue);

对于逻辑和功能:

  • Dictionary Key(id)应该是唯一的 Value可以是重复的即可。

  • SelectList Value(id)应该是唯一的 Text可以是重复的即可。

  • 最后在dropdownlist列表中应该使用SelectList,然后在dictionary使用dropdownlist时,您应该创建基于SelectList的{​​{1}}。你正在这样做,转换架构是这样的:
  
      
  • Dicatinary 密钥&gt;&gt;&gt;&gt; Dicatinary
  •   
  • SelectList &gt;&gt; Dictionary 文字
  •   

现在决定你应该在字典选择中使用条件来达到目标​​。

修改

SelectList创建Selectlist,并将默认选定值设为Dictinary

Max value

将填好的Dictionary<int,int> myDictionary = GetDictionary(); var pets=new SelectList(myDictionary, "key","value", myDictionary.Max(x => x.Key)); 传递给视图

selectList

在视图中:

ViewBag.Pets = pets;

现在您只需要根据应用程序逻辑编写@{ var myPets = ViewBag.Pets as Dictionary<int,int>; } @Html.DropDownListFor(x => x.Pets, myPets, new { @class = "type1 newdrop" }) 方法代码来创建适当的数据字典。

答案 2 :(得分:0)

以下是我们通常如何填充下拉列表的方法。

例如,您为下拉列表中的项目创建了一个类:

public class MaxP
{
    public int Key { get; set; }
    public int Value { get; set; }
}

然后在您在控制器中的操作中,您将填充您的选择列表,如下所示:

var list = new List<MaxP>();
list.Add(new MaxP { Key = 12, Value = 2 });
list.Add(new MaxP { Key = 13, Value = 2 });
list.Add(new MaxP { Key = 14, Value = 2 });

ViewBag.Pets = new SelectList(list, "Key", "Value", null);

在你看来:

@Html.DropDownListFor(x => x.Pets, (SelectList)ViewBag.Pets, new { @class = "type1 newdrop" });

请注意,您的下拉列表中显示的文字为&#34; 2&#34;。如果选中它,你将得到的值将是&#39; Key&#39;在我们的例子中是12,13和14。

希望很清楚。从初学者的角度来看,这可能很复杂,但是我们都在那里。但我鼓励你开始做基本的,你的好去。请从基础开始学习。这是一个很好的起点:http://www.asp.net/mvc/overview/older-versions-1/getting-started-with-mvc/getting-started-with-mvc-part1

代码没有经过测试,但我希望你明白这一点,快乐学习。