@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}
};
答案 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
答案 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);
使用dropdownlist
和key 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
代码没有经过测试,但我希望你明白这一点,快乐学习。